【QT】QT从零入门教程(六):QDockWidget停靠窗口
QDockWidget
上节我们引出了QDockWidget的概念,这节进行讲解并加以引用。
常用函数:
1、addDockWidget:添加停靠控件,用于指定或更改停靠控件的位置以及方向。
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget)
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation)
2、splitDockWidget:分割窗口,用于对两个QDockWidget进行水平或垂直布局。
void QMainWindow::splitDockWidget(QDockWidget * first, QDockWidget * second, Qt::Orientation orientation)
3、tabifyDockWidget:合并窗口,用于将多个QDockWidget叠加到同一区域。
void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)
4、setDockNestingEnabled:是否允许嵌套布局
void QMainWindow::setDockNestingEnabled(bool enabled)
设置嵌套布局
在自编软件中,博主用到了9个QDockWidget,作为软件的基本窗口进行布局。下面介绍创建布局的方法。
首先是去除中央窗体(这是重点)。QMainWindow中自带中央窗体,如果不去除的话,可能会造成窗口间有空块的情况,大家可以自行尝试。去除后,所有窗口都由QDockWidget构成。
// cpp
QWidget* p = takeCentralWidget(); //删除中央窗体
if (p)delete p;setDockNestingEnabled(true); //允许嵌套dock
创建多个窗口
首先对setFeatures函数内的参数进行解释。
dock->setFeatures(QDockWidget::DockWidgetMovable); // 设置可移动
dock->setFeatures(QDockWidget::DockWidgetFloatable); // 设置可浮动
dock->setFeatures(QDockWidget::DockWidgetClosable); // 设置可关闭
dock->setFeatures(QDockWidget::AllDockWidgetFeatures); // 以上三种都包含
如果想对窗口大小进行限制呢?QDockWidget也有相应的函数。
dock ->setFixedWidth(int w);
dock ->setFixedHeight(int h);
dock ->setFixedSize(int w, int h);dock ->setMinimumWidth(int minw);
dock ->setMinimumHeight(int minh);
dock ->setMinimumSize(int minw, int minh)dock ->setMaximumWidth(int maxw);
dock ->setMaximumHeight (int maxh);
dock ->setMaximumSize(int maxw, int maxh)
实现代码:
// 头文件
QDockWidget *dock_Image; // 图像窗口
QDockWidget* dock_Tool;// 工具箱窗口
QDockWidget* dock_Geom;// 几何变换窗口
QDockWidget* dock_Gray;// 灰度变换窗口
QDockWidget* dock_Enhance;// 图像增强窗口
QDockWidget* dock_Morp;// 形态学处理窗口
QDockWidget* dock_Color;// 颜色模型窗口
QDockWidget* dock_Prop;// 属性窗口
QDockWidget* dock_Output;// 输出窗口
// cpp
// QDockWidget* dock_Image = new QDockWidget(tr("图像"), this); // 上节中已定义,如果只想做本节内容,可取消注释
dock_Image->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); // 设置为可移动可浮动,但不可关闭
dock_Image->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); // 可移动范围:左右
dock_Image->setMinimumSize(600, 600); // 设置最小宽高dock_Tool = new QDockWidget(tr("工具箱"), this); // 工具箱窗口,若想设置特征或移动范围,方法同上。
dock_Geom = new QDockWidget(tr("几何变换"), this); // 几何变换窗口
dock_Gray = new QDockWidget(tr("灰度变换"), this); // 灰度变换窗口
dock_Enhance = new QDockWidget(tr("图像增强"), this); // 图像增强窗口
dock_Morp = new QDockWidget(tr("形态学处理"), this); // 形态学处理窗口
dock_Color = new QDockWidget(tr("颜色模型"), this); // 颜色模型窗口
dock_Prop = new QDockWidget(tr("属性"), this); // 属性窗口
dock_Output = new QDockWidget(tr("输出"), this); // 输出窗口// 进行布局
setCentralWidget(dock_Image); // 指定为中心窗口
addDockWidget(Qt::LeftDockWidgetArea, dock_Tool);
addDockWidget(Qt::BottomDockWidgetArea, dock_Output);
addDockWidget(Qt::RightDockWidgetArea, dock_Geom);
addDockWidget(Qt::RightDockWidgetArea, dock_Gray);
addDockWidget(Qt::RightDockWidgetArea, dock_Enhance);
addDockWidget(Qt::RightDockWidgetArea, dock_Morp);
addDockWidget(Qt::RightDockWidgetArea, dock_Color);
addDockWidget(Qt::RightDockWidgetArea, dock_Prop);// 分割窗口
splitDockWidget(dock_Tool, dock_Image, Qt::Horizontal); // 水平
splitDockWidget(dock_Geom, dock_Output, Qt::Vertical); // 垂直// 合并窗口
tabifyDockWidget(dock_Geom, dock_Gray);
tabifyDockWidget(dock_Gray, dock_Enhance);
tabifyDockWidget(dock_Enhance, dock_Morp);
tabifyDockWidget(dock_Morp, dock_Color);
tabifyDockWidget(dock_Output, dock_Prop);dock_Geom->raise(); // raise()函数可使指定窗口置于最前// connect(dock_Tool, SIGNAL(visibilityChanged(bool)), this, SLOT(isDockTool()));
// 当窗体隐藏或显示时,其信号为visibilityChanged(bool)函数,此处仅作简单演示,槽函数是自定义的,其他窗口同理。
实现效果:
【QT】QT从零入门教程(六):QDockWidget停靠窗口相关推荐
- R语言七天入门教程六:文件相关操作
R语言七天入门教程六:文件相关操作 一.文件的读写 R 语言作为统计学编程语言,常常需要处理大量数据,而这些数据通常会从文件中进行读取,因此文件读写在R语言中是非常重要的操作.在R语言中,用到最多的文 ...
- 【MATLAB Image Processing Toolbox 入门教程六】“导入、导出和转换”之“图像类型转换Ⅰ——在不同图像类型之间转换”
[MATLAB Image Processing Toolbox 入门教程六] 1 gray2ind函数 2 ind2gray函数 3 mat2gray函数 4 rgb2gray函数 5 rgb2in ...
- QT界面:QDockWidget停靠窗口使用小结
QDockWidget停靠窗口 Qt构建停靠窗口使用的是QDockWidget类. 窗口特性 停靠窗口特性可以通过setFeatures(QDockWidget::AllDockWidgetFeatu ...
- 无废话ExtJs 入门教程六[按钮:Button]
无废话ExtJs 入门教程六[按钮:Button] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个按钮"提交"与重置.如下所示代码区的第6 ...
- 【QT】QT从零入门教程(一):图像处理自编软件
自说自话 寒假有了闲暇时间,于是决定做一个实际点的项目.在此之前,一直想做一款软件,把自己所学过的知识融汇进去,以软件界面的形式呈现出来.此前接触过OpenCV,学C++也有一段时间了,正好想从零 ...
- 【QT】QT从零入门教程(十二):实现工具箱QButtonGroup
工具箱有两种实现方式,一是运用工具栏QToolBar,二是运用QButtonGroup,在按钮组内创建多个QPushButton,每个按钮对应不同的槽函数. 本节的"工具箱" ...
- 【QT】QT从零入门教程(九):QT常用控件 [QSlider、QSpinBox、QComboBox、QRadioButton]
QSlider 滑动条与QSpinBox微调框 (这里只贴出控件的基本用法,需要时再查阅资料.) QSlider *slider = new QSlider(Qt::Horizontal); // 创 ...
- 【QT】QT从零入门教程(五):图像文件操作 [新建打开保存]
前文已经讲解了菜单栏.工具栏.任务栏的实现方法,下面我们对程序进行完善.实现功能为:为软件添加"文件"菜单,并在下拉列表上添加"新建". "打开& ...
- 【QT】QT从零入门教程(八):QT常用控件 [QLabel、QPushButton、QLineEdit、QTextEdit]
本节介绍一些常用的控件,是在"图像处理自编软件"中用到的几种,包括QLabel.QPushButton.QLineEdit.QTextEdit.QSlider.QSpinBox ...
最新文章
- gis属性表怎么导成excel_第022篇:ArcGIS中将属性表直接导出为Excel的方法
- 实景三维系列4 | 为什么需要单体化
- Numpy 中 mean() 和 average() 的区别?(average可计算加权平均)
- CONCAT 联合查询
- 委托到Lambda的进化: ()= {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
- Kubernetes集群上的Apache Ignite和Spring第3部分:测试应用程序
- Java中的硬件事务性内存,或者为什么同步将再次变得很棒
- vue-todolist
- [PA 2014]Kuglarz
- .1 matlab,1 MATLAB集成环境
- php环行队列实现,java数组实现队列及环形队列实现过程解析
- python mro文件_Python中MRO
- winRAR 密码暴力破解/清除压缩文件密码工具
- 【编译原理】 CS143 斯坦福大学公开课 第一周:简介
- Eat Pray Love!
- 另一个伊甸专武,国际服用(手机随便做的,有点粗糙,见谅
- css做出京东登录界面
- 高通SIMLOCK研究
- 爬取起点小说总排行榜
- 秋天,小溪潺潺,古老的树上黄叶灿灿,阳光像一个魔法师,在树叶间流动,远山,云天,充满秋阳的光线。以此景观做一首诗...
热门文章
- python小人画爱心_使用Python画出小人发射爱心的代码
- springboot改文件头_SpringBoot配置文件常用配置示例
- hnu 暑期实训之相同生日
- 导致集群重启_园区网核心交换机S7706异常重启导致无线网络故障
- Python编程技巧合集
- 洛谷 P1908 逆序对(树状数组+离散化)
- Lucene使用与优化(转)
- supervisor+gunicorn部署python web项目
- Spring框架中XML配置文件注入集合(数组、LIST、MAP、SET)属性
- leetcode942. DI String Match