Qt中的窗口部件

Qt中的窗口部件

QMainWindow:带有菜单栏、工具栏的主窗口类,QDialog:是各种对话框的基类,它们全部继承自QWidget,其实所有的窗口部件都继承自QWidget。QWidget继承自QObject和QPaintDevice类,其中QObject类是所有支持Qt对象模型(Qt QObject Model)的基类,QPaintDevice类是所有可以绘制的对象的基类。

Qt窗口部件、窗口类型、几何布局

QWidget的构造函数有两个参数:QWidget * parent = 0 和Qt::WindowFlags f =0,前面的parent就是指父窗口部件,默认值为0,表明没有父窗口;而后面的f参数是Qt::WindowFlags类型,是一个枚举类型,分为窗口类型(WindowType)和窗口标志(WindowFlags)。前者可以定义窗口的类型,比如f =0表明使用了Qt::Widget一项,这是QWidget的默认类型,这种类型的部件如果有父窗口,那么他就是子部件,否则就是独立的窗口。窗口标志的作用是更改窗口的标题栏和边框,而且可以和窗口类型进行位或操作。QWidget中还有一个setWindowState()函数可以用来设置窗口的状态,比如最大化Qt::WindowMaximized、最小化Qt::WindowMinimized和全屏显示Qt::WindowFullScreen等,这个函数的默认设置为Qt::WindowNoState。
窗口的几何布局
对于一个窗口要设置它的大小和运行时出现的位置,根据是否包含边框和标题栏两种情况,要使用不同的函数来获取
这里写图片描述
包含框架:x()、y()、frameGeometry()、pos()、move()等函数
不包含框架:geometry()、width()、height()、rect()、size()等函数
对话框
两种不同类型的对话框、多窗口组成并且窗口间相互切换的程序、Qt提供的标准对话框
模态和非模态对话框
QDialog dialog 定义一个对象
QDialog *dialog 定义一个指向QDialog类对象的指针变量
模态对话框:在没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互
非模态对话框:既可以与它交互,也可以与同一程序的其他窗口交互
要想使一个对话框成为模态对话框,只需要调用它的exec()函数,而要使其成为非模态对话框,可以使用new操作来创建,然后使用show()函数来显示。
与setModel()函数类似还有一个setWindowModality()函数,它有一个参数来设置模态对话框要阻塞的窗口类型,可以是Qt::NonModal(不阻塞任何窗口,就是非模态),Qt::WindowModal(阻塞它的父窗口和所有祖先窗口以及它们的子窗口)、Qt::ApplicationModal(阻塞整个应用程序的所有窗口)三者之一,而setModal()函数默认设置的是Qt::ApplicationModal
标准对话框
Qt提供了一些常用的对话框类型,全部继承自QDialog类
颜色对话框类 QColorDialog
QColor(ARGB 1, 1, 0, 0),这里的4个数值分别代表透明度(alpha)、红色(red)、绿色(green)、蓝色(blue)。它们的数值都是从0.0~1.0,有效数字为6位。对于alpha来说,1.0表示完全不透明,这是默认值,而0.0表示完全透明。对于三基色红、绿、蓝的数值,还可以使用0~255来表示。其中0表示颜色最浅,255表示颜色最深。在0~255与0.0~1.0之间可以通过简单的数学运算啦对应,其中0对应于0.0,255对应于1.0.
文件件对话框类 QFileDialog
getOpenFileName() 获取选择的文件名
getSaveFileName() 保存文件对话框和文件另存为对话框
getExistingDirectory() 获取一个已存在的文件夹路径
字体对话框 QFontDialog
输入对话框 QInputDialog
消息对话框QmessageBox类提供了一个模态对话框用来通知用户一些信息,或者向用户提出一个问题并且获取答案
进度对话框QProgressDialog
错误消息对话框 QerrorMessage
向导对话框 Qwizard

其他窗口部件
QFrame类是带有边框的部件的基类。对于QFrame的子类,它们都继承了Qframe边框设置功能

布局管理
这里写图片描述
QBoxLayout(基本布局管理器)、QGridLayout(栅格布局管理器)、QFormLayout(表单布局管理器)、QStackedLayout(栈布局管理器)
基本布局管理器(QBoxLayout)
layoutSpacing 布局管理器中各个子部件间的距离
layoutStretch 伸缩因子
layoutSizeConstraint 设置大小约束条件

//void QLayout::setContentsMargins ( int left, int top, int right, int bottom )
//4个参数顺序是左、上、右、下
//将这个布局设置为MyWidget类的布局
layout->setContentsMargins(50,0,50,100);

栅格布局管理器 (QGridLayout)

QGridLayout *layout = new QGridLayout;
//添加部件,从第0行0列开始,占据1行2列
layout->addWidget(ui->fontComboBox,0,0,1,2);
//添加部件,从第0行2列开始,占据1行1列
layout->addWidget(ui->pushButton,0,2,1,1);
//添加部件,从第1行0列开始,占据1行3列
layout->addWidget(ui->textEdit,1,0,1,3);
setLayout(layout);

表单布局管理器(QFormLayout)
管理表格的输入部件及其相关的标签,将它的子部件分为两列,左边是一些标签,右边是一些输入部件。可以在代码中使用addRow()函数来完成。
设置部件大小
大小提示(sizeHint)、最小大小提示(minimumSizeHint),其中sizeHint属性保存了部件的建议大小,对于不同的部件,默认拥有不同的sizeHint;而minimumSizeHint保存了一个建议的最小大小。可以使用sizeHint()函数来获取sizeHint的值,使用minimumSizeHint()函数获取minimumSizeHint的值。

大小策略(sizePolicy)
保存了部件的默认布局行为,在水平和垂直两个方向上分别起作用,控制着部件在布局管理器中的大小变化行为。
这里写图片描述

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值