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 ...
随机推荐
- jquery选择后代以及toggle,toggleClass用法
$("#id").find(".classname") 选择id为xx下的类名为xx的元素 toggle $(this).next(".c ...
- 《DSP using MATLAB》Problem 6.10
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- hdu4965 Fast Matrix Calculation 矩阵快速幂
One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...
- UBUNTU 安装教程
玩过linux,只是博主觉得现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,但是很多生产上的框架和工具都是安装在服务器上的,而且有不少大公司都要求熟悉在li ...
- Hiveserver2 OOM问题解法
数据平台做一些计算需要通过hive jdbc方式连到hiveserver2执行job,但是hiveserver 正常运行一段时间后,总是会报如下OOM: 1 2 3 4 5 6 7 8 9 10 ...
- microcks 微服务mocks 工具&&运行时
microcks 是一个方便的微服务mock 工具,我们可以用来mock request.response,同时获取api 的服务契约,microcks 支持的部署模式也比较多,docker-comp ...
- Physics for Game Programmers (Grant Palmer 著)
CHAPTER1 Adding Realism to Your Games CHAPTER2 Some Basic Concepts CHAPTER3 Basic Newtonian Mechanic ...
- 记录:.user.ini 使用
记录:.user.ini 使用 可以用于防跨站配置. .user.ini 注意安全问题 动态加载,默认 5 分钟自动刷新. php 5.3 以后的版本支持. 修改完成后再将文件锁定. 相关链接: 神秘 ...
- str的用法
## 字符串的索引切片以及常用的操作方法都是形成新的字符串,和原字符串没有关系 # 切片和索引 # 按照索引取值 #按照切片取值 ,顾头不顾尾, #切片加步长 # 只要倒叙取值就要加上反向步长 ...
- Node。js 访问gmail
参考: https://developers.google.com/gmail/api/quickstart/nodejs step 1,在google网站上打开gmail api,下载JSOn st ...