qt可停靠控件和工具栏(Dock Widgets and Toolbars)

news/2024/7/4 14:55:59 标签: qt, 工具, microsoft, shapes

     可停靠控件能够停靠在QMainWindow中或者作为一个独立窗口浮动。QMainWindow提供了四个可停靠控件的地方:上方,下方,左方,右方。Microsoft Visual Stadio程序和Qt Linguist程序使用大量的可停靠窗口实现更为复杂的用户界面。在Qt中,可停靠窗口是QDockWidget的一个实例。

 

       每一个可停靠控件都有一个标题条。用户可以拖动标题栏把窗口从一个可停靠区域移动到另一个可停靠区域。拖动标题栏把窗口移动到不能停靠的区域,窗口就浮动为一个独立的窗口。自由浮动的窗口总是在主窗口的上面。用户点击标题栏上的关闭按钮可以关闭QDockWidget。调用QDockWidget::setFeatures()能够设置以上这些属性。
       在Qt的早期版本中,工具条也是作为可停靠控件,可以放置在任何可停靠区域中。从Qt4开始,工具条有了自己的位置,不能再浮动了,如果需要一个可停靠的工具条,我们可以把它放到QDockWindow里面。
用点线表示的四个角落可以属于任何一个相邻的可停靠区域。例如,调用QMainWindow::setCorner(Qt::TopLeftCorner,Qt::LeftDockWidgetArea)把左上角作为左侧的停靠区域。
下面的代码将一个现有的控件(如QTreeWidget)放置到QDockWidget中,停靠再右边的停靠区域。
QDockWidget *shapesDockWidget = new QDockWidget(tr("Shapes"));
shapesDockWidget->setWidget(treeWidget);
shapesDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea
                                  | Qt::RightDockWidgetArea);
addDockWidget(Qt::RightDockWidgetArea, shapesDockWidget);
 
函数setAllowAreas()确定控件可停靠的位置。在上面的代码允许用户把窗口拖动到左边或者右边的可停靠区域,这两个地方垂直控件足够显示一个树型控件。如果没有指定停靠区域,用户可以拖动控件到任何四个可停靠的区域。
 
下面的代码创建一个工具栏,包含一个QComboBox,QSpinBox和一些QToolButton,代码为QMainWindow子类的构造函数的一部分:
QToolBar *fontToolBar = new QToolBar(tr("Font"));
fontToolBar->addWidget(familyComboBox);
fontToolBar->addWidget(sizeSpinBox);
fontToolBar->addAction(boldAction);
fontToolBar->addAction(italicAction);
fontToolBar->addAction(underlineAction);
fontToolBar->setAllowedAreas(Qt::TopToolBarArea
                             | Qt::BottomToolBarArea);
addToolBar(fontToolBar);
 
如果我们需要在下一次运行程序时恢复所有可停靠控件和工具栏的位置,可以使用和保存QSplitter状态相似的代码:
 
void MainWindow::writeSettings()
{
    QSettings settings("Software Inc.", "Icon Editor");
    settings.beginGroup("mainWindow");
    settings.setValue("size", size());
    settings.setValue("state", saveState());
    settings.endGroup();
}
void MainWindow::readSettings()
{
    QSettings settings("Software Inc.", "Icon Editor");
    settings.beginGroup("mainWindow");
    resize(settings.value("size").toSize());
    restoreState(settings.value("state").toByteArray());
    settings.endGroup();
}
 
QMainWindow提供了一个上下文菜单,列出了所有可停靠的窗口和工具栏。用户可以通过这个菜单关闭显示停靠窗口和工具栏。


http://www.niftyadmin.cn/n/1535964.html

相关文章

java添加空格_JAVA和JS字符串每4个字符添加空格

一.JS实现方法701f3orma43tN5umb6er044567.replace(/s/g, ).replace(/(w{4})(?w)/g, $1 )结果: 701f 3orm a43t N5um b6er 0445 67详细解释replace(/s/g, )s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。注意 Unicode 正则表达式会匹配全角空…

计算机基础系列三:网络基础之网络协议

一. 网络通信原理 1. 互联网的本质就是一系列的网络协议 有了计算机硬件,操作系统和应用软件,人们就可以使用这台计算机了。但是,此时计算机彼此孤立,无法一同玩耍。 Internet 图1 如何让两台彼此孤立的计算机能够产生通信&…

自己动手编写c++事件模型

在Java、C#等语言或者说其类库中,都实现了事件模型。而c语言本身并没有定义事件机制,并且在目前众多优秀的c类库,包括STL、Boost等都没有实现类似的事件机制。当我们被MFC的消息搞得头昏眼花之时,是否有冲动自己去实现…

BZOJ3999

来自蒟蒻XXJ的做题记录 其实这个题目就是一个比较裸的树剖w然后再加上一个线段树维护 首先看题目我们要解决的是一个求解区间里两个数之间差的最大值【绕 而且我们发现这两个数的关系还必须在路径上是有向的,也就是说必须是一个后走到的点减去一个先走到的点【雾 【…

GDP含金量倒数第三与山东人的幸福

2009年GDP前三甲是广东、江苏、山东,分别为3.9万亿,3.4万亿,3.38万亿;2009年GDP含金量排名后三位是山东、新疆、内蒙古。前茅与垫底都有山东,或就是说,山东的GDP“含金量”与实际GDP的落差之大可以用惨不忍…

Mysql 唯一索引长度_关于mysql索引长度的相关内容总结

MySQL优化之-索引具体代码分析:索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引&…

Windows下安装Jekyll

一直以来使用jekyll更新文章时都是在Windows下的Linux虚拟机内构建,测试, 因为听闻Windows下安装比较麻烦,不过现在觉得打开虚拟机更麻烦, 所以本着不作死不罢休的精神开始了Windows下jekyll安装之旅... 安装Ruby和RubyDevKit 下载…

qt中文翻译步骤

第一步 在你的pro里面加入 TRANSLATIONS myexec_zh.ts 第二步 用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate my.pro 第三步 用 linguist 打开刚才的ts文件,linugist是在qt的bin的目录里面, 是一个界面工具 打开linguist 后用菜单栏file ->open 打开 相应的ts文…