QT界面:QDockWidget停靠窗口使用小结
QDockWidget停靠窗口
Qt构建停靠窗口使用的是QDockWidget类。
窗口特性
停靠窗口特性可以通过setFeatures(QDockWidget::AllDockWidgetFeatures)方法进行设置:
常亮 | 值 | 描述 |
---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | 窗口可关闭 |
QDockWidget::DockWidgetMovable | 0x02 | 窗口可移动 |
QDockWidget::DockWidgetFloatable | 0x04 | 停靠窗口可以与主窗口分离,作为独立窗口浮动 |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | 停靠窗口在左侧显示垂直标题栏。 用于增加QMainWindow中的垂直空间。 |
QDockWidget::AllDockWidgetFeatures | DockWidgetClosable /DockWidgetMovable / DockWidgetFloatable | (不建议使用)可以关闭,移动和浮动停靠窗口 |
QDockWidget::NoDockWidgetFeatures | 0x00 | 停靠窗口不可关闭、移动、浮动 |
停靠区域
通过setAllowedAreas(Qt::DockWidgetAreas areas)设置窗口停靠区域:
常亮 | 值 |
---|---|
Qt::LeftDockWidgetArea | 0x1 |
Qt::RightDockWidgetArea | 0x2 |
Qt::TopDockWidgetArea | 0x4 |
Qt::BottomDockWidgetArea | 0x8 |
Qt::AllDockWidgetAreas | DockWidgetArea_Mask |
Qt::NoDockWidgetArea | 0 |
隐藏与显示
窗口的隐藏与显示可通过hide()、show()实现,判断窗口的显示与隐藏状态可用isHidden()。
示例
环境:Win10+VS2015+Qt5.9.7
首先创建一个Qt GUI Application。工程名:myDockWidget。然后,在资源文件中添加一幅图像资源:
头文件
myDockWidget.h:
#pragma once#include <QtWidgets/QMainWindow>
#include <QHBoxLayout>
#include <QPushButton>
#include <QRadioButton>
#include <QCheckBox>
#include <QSpinBox>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>#include "ui_myDockWidget.h"#pragma execution_character_set("utf-8")class myDockWidget : public QMainWindow
{Q_OBJECTpublic:myDockWidget(QWidget *parent = Q_NULLPTR);private:Ui::myDockWidgetClass ui;
};
源文件
myDockWidget.cpp:
在停靠窗口中添加一些控件资源。
#include "myDockWidget.h"myDockWidget::myDockWidget(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);//显示——停靠窗口QLabel *m_qLabel = new QLabel("", this);m_qLabel->setAlignment(Qt::AlignCenter);m_qLabel->setStyleSheet("border-image: url(:/myDockWidget/Resources/image.jpg);");m_qLabel->setMinimumWidth(500);m_qLabel->setMinimumHeight(300);QHBoxLayout *hlayout0 = new QHBoxLayout;hlayout0->addWidget(m_qLabel);QGridLayout *vlayout0 = new QGridLayout;vlayout0->addLayout(hlayout0, 0, 0);QWidget *cornerWidget0 = new QWidget;cornerWidget0->setLayout(vlayout0);setCentralWidget(cornerWidget0);//调试——停靠窗口QDockWidget *debugging = new QDockWidget("调试", this);//构建停靠窗口,指定父类debugging->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可移动,可关闭debugging->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边debugging->setMinimumWidth(200);QTextEdit *debuggingEdit = new QTextEdit("调试——停靠窗口);debugging->setWidget(debuggingEdit);addDockWidget(Qt::RightDockWidgetArea, debugging);//测试——停靠窗口QDockWidget *dw3 = new QDockWidget("测试", this);//构建停靠窗口,指定父类dw3->setFeatures(QDockWidget::DockWidgetMovable);//设置停靠窗口特性,可移动,可关闭dw3->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边QHBoxLayout *hlayout31 = new QHBoxLayout;QPushButton *runPushButton = new QPushButton(tr("运行"));QPushButton *stopPushButton = new QPushButton(tr("停止"));hlayout31->addWidget(runPushButton);hlayout31->addWidget(stopPushButton);QGridLayout *vlayout3 = new QGridLayout;vlayout3->addLayout(hlayout31, 0, 0);QWidget *cornerWidget3 = new QWidget;cornerWidget3->setLayout(vlayout3);dw3->setWidget(cornerWidget3);dw3->setMaximumHeight(100);dw3->setMaximumWidth(300);addDockWidget(Qt::LeftDockWidgetArea, dw3);}
效果如图:
为停靠窗口中的控件添加槽函数
头文件
myDockWidget.h:
#pragma once#include <QtWidgets/QMainWindow>
#include <QHBoxLayout>
#include <QPushButton>
#include <QRadioButton>
#include <QCheckBox>
#include <QSpinBox>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>
#include <QMessageBox>#include "ui_myDockWidget.h"#pragma execution_character_set("utf-8")class myDockWidget : public QMainWindow
{Q_OBJECTpublic:myDockWidget(QWidget *parent = Q_NULLPTR);private:Ui::myDockWidgetClass ui;QPushButton *runPushButton;private slots:void runPushButtonSlot();};
源文件
myDockWidget.cpp:
#include "myDockWidget.h"myDockWidget::myDockWidget(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);//显示——停靠窗口QLabel *m_qLabel = new QLabel("", this);m_qLabel->setAlignment(Qt::AlignCenter);m_qLabel->setStyleSheet("border-image: url(:/myDockWidget/Resources/image.jpg);");m_qLabel->setMinimumWidth(500);m_qLabel->setMinimumHeight(300);QHBoxLayout *hlayout0 = new QHBoxLayout;hlayout0->addWidget(m_qLabel);QGridLayout *vlayout0 = new QGridLayout;vlayout0->addLayout(hlayout0, 0, 0);QWidget *cornerWidget0 = new QWidget;cornerWidget0->setLayout(vlayout0);setCentralWidget(cornerWidget0);//调试——停靠窗口QDockWidget *debugging = new QDockWidget("调试", this);//构建停靠窗口,指定父类debugging->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可移动,可关闭debugging->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边debugging->setMinimumWidth(200);QTextEdit *debuggingEdit = new QTextEdit("调试——停靠窗口");debugging->setWidget(debuggingEdit);addDockWidget(Qt::RightDockWidgetArea, debugging);//测试——停靠窗口QDockWidget *dw3 = new QDockWidget("测试", this);//构建停靠窗口,指定父类dw3->setFeatures(QDockWidget::DockWidgetMovable);//设置停靠窗口特性,可移动,可关闭dw3->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边QHBoxLayout *hlayout31 = new QHBoxLayout;runPushButton = new QPushButton(tr("运行"));runPushButton->setStyleSheet("background-color: rgb(0, 255, 127);");QObject::connect(runPushButton, SIGNAL(clicked()), this, SLOT(runPushButtonSlot()));QPushButton *stopPushButton = new QPushButton(tr("停止"));hlayout31->addWidget(runPushButton);hlayout31->addWidget(stopPushButton);QGridLayout *vlayout3 = new QGridLayout;vlayout3->addLayout(hlayout31, 0, 0);QWidget *cornerWidget3 = new QWidget;cornerWidget3->setLayout(vlayout3);dw3->setWidget(cornerWidget3);dw3->setMaximumHeight(100);dw3->setMaximumWidth(300);addDockWidget(Qt::LeftDockWidgetArea, dw3);}void myDockWidget::runPushButtonSlot()
{runPushButton->setStyleSheet("background-color: rgb(255, 100, 100);");QMessageBox::information(this, "提示:", "开始运行");
}
QT界面:QDockWidget停靠窗口使用小结相关推荐
- 【QT】QT从零入门教程(六):QDockWidget停靠窗口
QDockWidget 上节我们引出了QDockWidget的概念,这节进行讲解并加以引用. 常用函数: 1.addDockWidget:添加停靠控件,用于指定或更改停靠控件的位置以及方向 ...
- Qt中QDockWidget停靠窗之设置布局比例,保存布局和恢复布局
新建一个QMainWindow的空项目 (懒得看又臭又长直接到最后复制整段代码) 先新建一个QMainWindow的空项目,不使用.ui文件. 这时候mainwindow.h文件中没有成员变量 #pr ...
- 【转】QDockWidget 停靠窗口和工具栏
转:http://blog.csdn.net/a649518776/article/details/6636490 下面用代码实现上面窗口的设计: 1.建立项目时基类选择QMainWindow,取消G ...
- Qt模仿VS停靠窗口(一)
前言 众所周知,停靠窗口可以实现任意拖动效果,本文重点在于如何利用Qt制作与Visual Studio相似的带有停靠方向标及停靠区域预览的的停靠窗口框架. 百度网盘体验地址: 链接:https://p ...
- QT界面:tabWidget选项卡使用小结
环境:Win10+VS2015+Qt5.9.7 首先创建一个Qt GUI Application,在GUI上拖拽一个tabWidget,对象名为tabWidget.系统会默认建立两个选项卡,如果不用可 ...
- Qt Widgets 之 QDockWidget(停靠窗口)
目录 什么是停靠窗口 如何添加停靠窗口 QDockWidget::setWidget() QMainWindow::addDockWidget() 设置停靠选项 (Options) AnimatedD ...
- Qt(三)窗口分割、停靠、堆叠
文章目录 一.窗口分割 QSplitter 二.窗口停靠 QDockWidget 三.窗口堆叠 QStackedWidget 演示实例: 创建QMainWindow应用, 无UI文件 一.窗口分割 Q ...
- c语言mfc窗口跳到下个窗口,MFC停靠窗口实现(CDockablePane)
工作中编写MFC界面程序时用到了停靠窗口,为了避免之后用到时再去查询,这里记录下. 步骤 1.定义一个继承自CDockablePane的类 Class CDockableTest : public C ...
- QT--QDockWidget 停靠窗口
#include "mainwindow.h" #include<QDockWidget> #include<QTextEdit> MainWindow:: ...
最新文章
- 使用Python、OpenCV计算轮廓的中心
- mysql存储过程表_mysql 存储过程,表
- 居然以反战的名义,利用开源工具包“投毒”!
- python人脸识别毕业设计-用python3.6在电脑上实现用摄像头来人脸识别源程序
- LVS(6)——NAT准备工作
- php投票系统制作,php简单的投票系统[原创]
- HTML的相关路径与绝对路径的问题---通过网络搜索整理
- linux使用gpio开一个线程,LINUX的gpio_request_one作用
- WindowsAPI----AttachThreadInput使用
- 研究生阅读管理文献---我阅读科研文献的一些做法
- 读《世界是数字的》有感③
- SpringMVC 异常记录
- 通达信资金净流入公式_通达信指标公式:资金净流入,监控资金流入流出,分享...
- vue使用ionic图标_Ionic团队的Vue图标集组件
- FAQ详解“Meltdown和Spectre”问题,接踵而来的“Skyfall和Solace”是否仅是骗局?
- 计算机中丢失d3dx9 43.dll,游戏提示“没有找到d3dx9_43.dll”的解决方法
- 查看各大网站服务器操作系统
- Chatopera 张凯:创业的信念,为了小家和大家
- nextdate函数白盒测试问题 软件测试_NextDate函数测试用例
- Web登录小案例(含验证码登录)
热门文章
- C语言-老鼠走迷宫(深度寻路算法)
- 农村有哪些有前景又稳妥的小本创业项目?
- python 同花顺thstrader_Python 踩坑之旅进程篇其三pgid是个什么鬼 (子进程\子孙进程无法kill 退出的解法)...
- java注释和注解_注释注解JAVA注解
- 计算机视觉在哪发表论文比较好,英才学院本科生在计算机视觉领域顶级会议ECCV发表论文...
- markdown+Pygments高亮代码
- 关于实现将excel表中的数据以文件上传的方式添加到数据库中
- php 门户网站,PHP的CMS系统整理
- 基于SSM的亲子活动平台的搭建与实现(源码+数据脚本+论文+技术文档)
- python爬取财富