Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)
转载:好儿郎~志在四方
详细描述:
QDockWidget类提供了一个窗体部件,其可以停靠在QMainWindow,或其本身作为一个在桌面上的顶级窗口(也就是父窗体)。
QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。
Dock window是放置在QMainWindow窗口周围的dock widget区域中的小部件。
图形描述如下:

Dock windows可以在几个区域中移动,或者是悬浮。该类提供的API允许程序员限制dock widgets的移动,悬浮和关闭,以及它可以被放置的区域。
成员类型:
QDockWidget对象包含一些特性,例如:移动、悬浮、关闭等等,这些都是枚举类型。

创建停靠窗体的流程:
- 创建一个QDockWidget对象的停靠窗体。
- 设置此停靠窗体的属性,通常可以使用setFeatures()以及setAllowedAreas()两种方法。
- 新建一个要插入停靠窗体的控件,常用的有QListWidget和QtextEdit。
- 将控件插入停靠窗体,调用QDockWidget()和setWidget()成员函数。
- 使用addDockWidget()方法,在MainWindow中加入此停靠窗体。
实例:
- 窗口1可以在左边和右边移动;
- 窗口2 没有相关的任何特性;
- 窗口3具有相关的所有特性;
步骤:
1、新建GUI应用,项目名自定义,基类选择QMainWindow,注意要取消"创建界面"复选框。
MainWindow类构造函数的说明:
class MainWindow : public QMainWindow
{
Q_OBJECT public:
MainWindow(QWidget *parent = );
~MainWindow();
};
2、MainWindow.cpp文件,也就是MainWindow类构造函数的实现,代码如下:
#include "mainwindow.h"
#include <QTextEdit>
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("DockWidget"));
QTextEdit *text = new QTextEdit(this);
text->setText(tr("主窗口"));
text->setAlignment(Qt::AlignCenter);
setCentralWidget(text); QDockWidget *dock = new QDockWidget(tr("DockWindow1"),this);
dock->setFeatures(QDockWidget::DockWidgetMovable); //指定停靠窗体的样式,此处为可移动
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QTextEdit *text1 = new QTextEdit();
text1->setText(tr("窗口一"));
dock->setWidget(text1);
addDockWidget(Qt::RightDockWidgetArea,dock); dock = new QDockWidget(tr("DockWindow2"),this);
dock->setFeatures(QDockWidget::NoDockWidgetFeatures); //没有相关的权限
QTextEdit *text2 = new QTextEdit();
text2->setText(tr("窗口二"));
dock->setWidget(text2);
addDockWidget(Qt::RightDockWidgetArea,dock); dock = new QDockWidget(tr("DockWindow3"),this);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures); //具有全部特性
QTextEdit *text3 = new QTextEdit();
text3->setText(tr("窗口三"));
dock->setWidget(text3);
addDockWidget(Qt::RightDockWidgetArea,dock); } MainWindow::~MainWindow()
{ }
3、主函数中的代码如下:
#include "mainwindow.h"
#include <QApplication>
#include <QFont>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont font("楷体",,QFont::Bold);
a.setFont(font); MainWindow w;
w.show();
w.setFixedSize(,); //设置窗体为固定的大小,防止用户通过拖拽改变其大小
return a.exec();
}
4、运行效果如下:

Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)的更多相关文章
- Qt5—嵌入停靠窗口QDockWidget
参考链接:http://blog.csdn.net/summer_xiyer/article/details/12875899 新建一个GUI工程: QDockWidget是QWidget的子类,也等 ...
- 第六章 Qt布局管理器Layout
第六章 Qt布局管理器Layout 大家有没有发现一个现象,我们放置一个组件,给组件最原始的定位是给出这个控件的坐标和宽高值,这样Qt就知道这个组件的位置.当用户改变窗口的大小,组件还静静地呆在原来的 ...
- 停靠窗口QDockWidget
停靠窗口QDockWidget要和QMainWindow一起搭配使用的 样式: import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets ...
- 初识Qt布局管理器
Qt布局管理器的类有4种,它们分别为QHBoxLayout.QVBoxLayout.QGridLayout和QStackLayout.其中,QHBoxLayout实现水平布局,QVBoxLayout实 ...
- Qt 布局管理器
在一个颜值当道的今天,无论买衣服,买车还是追星,颜值的高低已经变成了大家最看重的(不管男性女性都一样,千万别和我说你不是):而对于程序猿来说,开发一款软件,不再只注重逻辑和稳定性,美观和用户友好性也是 ...
- PyQt主窗体设置停靠窗口(QDockWidget)的叠加顺序
PyQt提供了方便的停靠窗口控件,我们可以很方便的编写一个停靠窗口,代码和效果如下: # -*- coding: utf-8 -*-from PyQt4 import QtGui, QtCore cl ...
- Qt布局管理器的使用(一)
曾经对Qt的布局管理器掌握的还不清楚,今天特意学习了下.感觉收获还挺大的,特意拿出来和大家分享. 首先.要明确布局管理器的用处,及使我们的界面看起来比較整洁.美化.另外一点就是为了使我们的控件可以更随 ...
- Qt布局管理
原地址:http://blog.csdn.net/lastsoup/article/details/7028243 设计软件中各个部件的位置排列,有两种方法: 1.设置widget的在父窗体中的坐标和 ...
- Qt——布局管理器
教程地址 运行截图: 代码: #include "mainwindow.h" #include <QApplication> #include <QHBoxLay ...
随机推荐
- CodeMirror tab转空格
解决CodeMirror编辑器Tab转空格问题 editor.setOption("extraKeys", { Tab: newTab }); function newTab(cm ...
- Arcgis API for JS——打印控件乱码
在通过Arcgis API for JS编写打印控件进行地图下载时,总发现地图字体乱码,如下图: 解决方法: 在装有ArcGIS Server,要调用服务的电脑或服务器上找到下图文件夹
- 20155219 2016-2017-2 《Java程序设计》第8周学习总结
20155219 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口, ...
- 重绘和回流(reflow和repaint)
由于DOM操作会导致浏览器的回流,回流需要花费大量的时间进行样式计算和节点重绘与渲染,所以应当尽量减少回流次数. 以下是几种常见的减少重绘和回流的方法: 一.不要一项一项的更改页面的样式,尽量一口气写 ...
- 实验吧—安全杂项——WP之 女神
点击链接下载压缩文件解压后得到 打开TXT文档: 能看出是base64,这么长,那就是转成图片喽~ 地址:http://www.vgot.net/test/image2base64.php? 然后就是 ...
- easyui的select使用
这是一个小demo,其他相关功能查看easyuiAPI,需要注意的是valueField: 'id', textField: 'name'中id指json的key,name指json的值,id和nam ...
- Java各个知识点详解总结
Java基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思 ...
- Nginx可以做什么?看完这篇你就懂了
本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得,欢迎留言交流. Nginx能做什么 —— ...
- Airtest Project的探索和使用
Airtest使用参考博文: https://testerhome.com/topics/12391 1. 安装Python 3 2. 安装pip: 安装方法参考另外一篇随笔 pip3部署: C:\U ...
- jumpserver修改默认管理员账号名
1.安装完毕jumpserver之后,默认管理员账号为admin 显然类似windows的administrator以及linux的root 把账号名改成别的 个人信息界面点击设置 修改为自己想要的用 ...