Qt窗口部件
QWidget类关系图
QT提供的默认部件基类包括QMainWindow、QWidget、和QDialog这三种,这三个部件基类也是用的最多的。
回到顶部 1. QMainWindow:
QMainWindow类提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。它有自己单独的布局。主窗口通常提供一个大的中央窗口部件,以及周围菜单,工具条,和一个状态栏。QMainWindow窗口经常被继承,使得封装中央部件,菜单,工具条,状态栏等都变得很容易,当用户点击它的时候,相应的槽就会被调用。布局有一个中心区域,通常是标准的Qt部件,也可以是定制部件,且必须有一个中心小部件。setCentralWidget()方法可设置中心部件。
如:
将 textEdit设置为中心部件
回到顶部 2. QWidget
QWidet类是所有用户界面对象的基类,被称为基础窗口部件,继承关系详看文章开头的QWidget类关系图。QWidget提供自我绘制和处理用户输入等基本功能,如接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的副窗口部件或者它前面的窗口部件盖住一部分。一个没有副窗口部件的窗口部件一定是顶级窗口部件。非顶级窗口部件是父窗口的子部件。
QWidget构造函数有两个参数:QWidget *parent = 0 和 Qt::WindowFlags f = 0。parent即父窗口,默认为0,即没有父窗口,是顶级窗口,如果指定 parent 值则当前窗体将会是一个子部件。Qt::WindowFlags 是 Qt::WindowType 枚举值的组合,用来设置窗口的属性,f = 0 表默认为 Qt::Widget 风格,其余窗口属性详见下表。
点击领取Qt学习资料+视频教程~「链接」
Qt:WindowFlags 释义
Qt::WidgetQWidget 构造函数的默认值,如果新的窗口部件没有父窗口部件,则它是一个独立的窗口,否则就是一个子窗口部件。另请参见Qt :: Window和Qt :: SubWindow。
Qt::Window 无论是否有父窗口部件,新窗口部件都是一个窗口,通常有一个窗口边框和一个标题栏 。请注意,如果部件没有父控件,则无法取消设置此标记(即如果存在父控件,则可以取消此标记,否则,必须存在此标记用以标识此控件是个独立窗口)。
Qt:: Dialog 新窗口部件是一个对话框,它是QDialog构造函数的默认值。如果要将其用作模态对话框,则应从另一个窗口启动它,或者如果有父窗口,则与QWidget::windowModality属性一起使用。如果将其设置为模态,则对话框将阻止应用程序中的其他顶级窗口获取任何输入。我们将具有父级的顶级窗口称为辅助窗口。
Qt::Sheet 新窗口部件是一个Macintosh表单(sheet) 。由于使用工作表意味着窗口模态,推荐的方法是使用QWidget :: setWindowModality()或QDialog :: open()。
Qt:: Drawer 新窗口部件是一个Macintosh抽屉(drawer)
Qt::Popup 新窗口部件是一个弹出式顶层窗口
Qt::Tool 新窗口部件是一个工具(tool)窗口,它通常是一个用于显示工具按钮的小窗口。如果一个工具窗口有父窗口部件,则它将显示在父窗口的部件上面,否则相当于使用了Qt::WindowStaysOnTopHint提示。如果窗口系统支持它,工具窗口可以用更轻的框架装饰。它也可以与Qt :: FramelessWindowHint结合使用。
Qt::ToolTip 表示窗口小部件是工具提示。 这在内部用于实现工具提示,没有标题栏和窗口边框。
Qt:: Desktop 新窗口部件是桌面,它是QDesktopWidget构造函数的默认值
Qt::SplashScreen 新窗口部件是一个欢迎窗口,它是SplashScreen构造函数的默认值。
Qt::SubWindow 新窗口部件是一个子窗口,而无论窗口部件是否有父窗口部件。此外,Qt还定义了一些控制窗口外观的窗口提示(这些窗口提示仅对顶层窗口有效)
Qt::ForeignWindow 指示此窗口对象是表示由另一个进程创建的本机平台窗口或手动使用本机代码的句柄。
Qt::CoverWindow 表示该窗口代表一个封面窗口,例如,当应用程序在BlackBerry平台上最小化时显示。
Qt::MSWindowFiredSizeDialogHint为Windows 系统上的窗口装饰一个窄的对话框边框,通常这个提示用于固定大小的对话框
Qt::MSWindowOwnDC为Windows 系统上的窗口添加自身的显示上下文菜单
Qt::BypassWindowManagerHint 此标志可用于向平台插件指示应禁用"所有"窗口管理器协议。 此标志的行为会有所不同,具体取决于运行应用程序的操作系统以及正在运行的窗口管理器。 该标志可用于获取没有配置集的本机窗口。
Qt::X11BypassWindowManagerHint 完全忽视窗口管理器,它的作用是产生一个根本不被管理的无窗口边框的窗口(此时,用户无法使用键盘进行输入,除非手动调用QWidget::activateWindow()函数)
Qt::FramelessWindowHint: 产生一个无窗口边框的窗口,此时用户无法移动该窗口和改变它的大小
Qt::NoDropShadowWindowHint 在支持平台上禁用窗口投影
Qt::CustomizeWindowHint 关闭默认的窗口标题提示
Qt::WindowTitleHint 为窗口装饰一个标题栏
Qt::WindowSystemMenuHint 为窗口添加一个窗口系统系统菜单,并尽可能地添加一个关闭按钮
Qt::WindowMinimizeButtonHint 为窗口添加一个"最小化"按钮
Qt::WindowMaximizeButtonHint 为窗口添加一个"最大化"按钮
Qt::WindowCloseButtonHint 为窗口添加一个"关闭"按钮
Qt::WindowMinMaxButtonHint 为窗口添加一个"最小化"按钮 和一个"最大化"按钮
Qt::WindowContextHelpButtonHint 为窗口添加一个"上下文帮助"按钮
Qt::WindowStaysOnTopHint 告知窗口系统,该窗口应该停留在所有其他窗口的上面
Qt::WindowType_Mask 一个用于提示窗口标识的窗口类型部分的掩码
setWindowState() 可设置窗体的状态,参数由 Qt::WindowStates 枚举值指定,窗体状态如下表所示。
窗体状态
作用
Qt::WindowNoState
窗体为正常状态
Qt::WindowMinimized
窗体最小化
Qt::WindowMaximized 窗体最大化
Qt::WindowFullScreen
窗体全屏显示
Qt::WindowActive
窗体为活动窗体
QWidget设计模式属性设置: enabled 启用或禁用widget,默认启用。 geometry widget的位置和尺寸。 sizePolicy 设置widget在水平和垂直方向的伸缩策略以及伸缩因子(Stretch Factors),所谓伸缩策略实际就是widget对待部件大小提示的策略,需结合布局管理器一起使用。伸缩策略可通过调用 setSizePolicy() 方法设置,大小提示可通过 sizeHint() 函数返回值获取,也可重载 sizeHint() 方法进行重置。 拉伸因子描述了各个部件在进行拉伸时,部件间以指定的比例进行拉伸,如水平布局的三个按钮其拉伸因子分别设为1,2,3则表示该3个按钮将会以1:2:3的比例进行拉伸。注意:1.当主窗口的大小不能按计算出来的比例容纳下所有子部件时,子部件不一定会按设计好的比例进行排列。
大小策略与拉伸因子之间的关系:
若部件的拉伸因子大于0,则按照拉伸因子的比例分配空间;若拉伸因子为0,则只有在其他部件不需要空间时才会获得空间;也就是说若一些部件拉伸因子大于0,而一些部件拉伸因子为0,则只有拉伸因子大于0的部件会被拉伸,而拉伸因子为0的部件不会被拉伸。若所有部件的拉伸因子都为0,则按照大小策略的规则对部件进行拉伸。注意:2.若部件的大小策略为Fixed,则即使设置了拉伸因子,该部件也不会被拉伸。故拉伸因子会使大小策略不起作用或失效(除了Fixed策略外)
属性值
作用
Fixed
尺寸不能改变,尺寸为sizeHint大小
Minimum
尺寸可以拉伸,尺寸可变范围:≥sizeHint
Maximum
尺寸可以缩小,尺寸可变范围:minimumSizeHint ~ sizeHint
Preferred
可以变大缩小,尺寸可变范围:≥minimumSizeHint
Expanding
可以变大缩小,尺寸可变范围:≥minimumSizeHint,且部件有优先扩展权(注:优先扩展权表部件将尽可能多的占用空间,如Preferred与Expanding同时存在则优先分配空间给Expanding)
MinimumExpanding
尺寸可以拉伸,尺寸可变范围:≥minimumSizeHint,且部件有优先扩展权
Ignored
任意变大缩小,尺寸可变范围:≥minimumSizeHint(若minimumSizeHint为0,则可缩小至0,此时部件不可见)
minimumSize 设置部件的最小尺寸,伸缩时不可继续缩小。 maximumSize 设置部件的最大尺寸,伸缩时不可继续变大。 palette 画板,设置部件的基本样式。 mouseTracking 鼠标跟踪,鼠标离开部件范围后,部件仍可以接收到mousemove等事件。 tabletTracking 平板或手机的陀螺仪、加速度传感器跟踪。 focusPolicy 焦点策略,按钮可以通过NoFocus使虚线消失,lineedit这类文本编辑框必须能获得焦点。
属性值
作用
NoFocus
无法通过点击和键盘获得焦点
TabFocus
鼠标无法获得焦点,Tab键获得焦点
ClickFocus
鼠标点击获得焦点,Tab键无法获得焦点
StrongFocus
鼠标和Tab键都可以获得焦点
WheelFocus
通过滚轮获得焦点
contextMenuPolicy 上下文菜单策略,指定菜单的显示方式。
属性值
作用
NoContextMenu
部件无菜单,菜单处理延迟到部件附亲
PreventContextMenu
部件无菜单,菜单处理不延迟到父亲,而是传递到本身。
DefaultContextMenu
调用部件的contextMenuEvent方法,默认处理方式为忽略上下文事件。
ActionsContextMenu
部件菜单由 actions定义构成
CustomContextMenu
部件菜单自定义,发送customContextMenuRequested信号
acceptDrops 设置部件是否接受拖拽事件,默认启用。 toolTip 设置部件的提示,鼠标悬浮时会显示。 toolTipDuration 设置widgettoolTip的显示持续时间,毫秒为单位,默认为-1,会一直显示。 statusTip 设置部件的状态提示,当窗口有statusBar时会显示在上面。 whatsThis 某些窗口会有whatsThis按钮,选中后点击其他按钮会显示帮助信息 accessibleName 辅助功能客户端应用程序所使用的控件名称。 accessibleDescription主要用来为视力较差或盲人用户,提供更大的上下文,也可以使用上下文搜索或其他应用程序。 layoutDirection widget布局的方向,LeftToRight,RightToLeft,LayoutDirectionAuto,字面意思 autoFillBackground 设置widget背景是否被画板颜色自动填充,默认不勾选 styleSheet 设置widget的qss样式表 locale 设置widget的区域和语言,在将时间等信息转成字符串后,年月日几个字会显示不同语言 inputMethodHint 设置widget输入时的屏幕键盘模式,有纯数字、纯字母等多种模式,用在手机端
回到顶部 3. QDialog
QDialog类是对话框窗口的基类,对话框窗口主要用于 短期任务和用户进行短期通讯的顶级窗口,其继承自QWidget,对话框有两种表现形式:模态对话框 或者是 非模态对话框。QDialog支持扩展并带有返回值,他们可以带有默认值
模态对话框: 模态对话框就是阻塞同一应用程序中其它可视窗口的输入的对话框。用户必须完成当前对话框中的交互操作并且关闭窗口后才能操作应用程序中的其它窗口。模态对话框有它们自己的本地事件循环。exec()方法可使窗口以模态方式运行。当用户关闭这个对话框,exec()将提供一个可用的返回值并且这时流程控制继续从调用exec()的地方进行。通常,我们连接默认按钮,例如"OK"到accept()槽并且把"Cancel"连接到reject()槽,来使对话框关闭并且返回适当的值。另外我们也可以连接done()槽,传递给它Accepted或Rejected。
非模态对话框: 当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。非模态对话框(Modeless Dialog)的概念是一个概念,不仅仅Qt中具有,在其他不同的平台下 也都存在。但是叫法可能有区别,例如模式对话框,无模式对话框等。
模态窗口运行:
(1)调用exec()方法,如
QDialog dlg;
dlg.exec();
(2)调用setModal()方法设置模态,如
QDialog dlg;
dlg.setModal(true);
dlg.show();
(3)QWidget widget;
widget.setWindowModality(Qt::ApplicationModal);
widget.show();
阻塞方式
阻塞效果
Qt::ApplicationModal
阻塞应用程序的所有窗口
Qt::WindowModal
阻塞阻塞父窗口、祖先窗口及它们的子窗口
Qt::NoModal
不阻塞,默认值
4. 其他部件4.1QLabel
常用来显示文本、数字、图片、gif动图。 4.2QLineEdit 接收用户输入
显示模式
显示模式
效果
QLineEdit::Normal
正常显示
QLineEdit::NoEcho
不显示
QLineEdit::Password
密码显示
QLineEdit::PasswordEchoOnEdit
编辑时候正常显示,其他密码显示
4.3 QLineEdit 掩码字符
字符(必须输入)
字符(可留空)
含义
A
a
只能输入A-Z,a-z
N
n
只能输入A-Z,a-z,0~9
X
x
可以输入任意字符
9
0
只能输入0-9
D
d
只能输入1-9
#
只能输入 +, -, 0-9
H
h
只能输入十六进制字符 (0-9,a-f,A-F)
B
b
只能输入二进制字符(0,1)
>
后面的字母字符自动转换为大写
!
停止字母字符的大小写转换
将该表中的特殊字符正常显示用作分隔符
QPushButton 按钮类,常用显示文字、图标。
QRadioButton 单选按钮类,只能选一个,当将单选按钮加入一个分组框中时,加入的按钮便是一个分组,分组中只能选中一个,具有排他性。QCheckBox是多选按钮类,可多选。
点击领取Qt学习资料+视频教程~「链接」
秋天的徽州,你去过了吗如果说徽州是一幅泼墨的山水画,黑白为底,低调着色,那么在一年中的秋天,徽州就是一幅活泼生动色彩鲜明的油画。一生痴绝处,无梦到徽州,万万不可错过金秋时节的烟雨徽州白墙黑瓦的民居精致隽
峨眉山正当红叶满山时,去雷洞坪体验星空露营金秋十月,是峨眉山最浪漫的季节,漫山遍野,五彩缤纷,秋色撩人。每年的10月中旬,地处峨眉高山区的绿色森林便悄然换上了斑斓的秋装,拉开了层林尽染的童话大幕,恭迎四海宾朋走进这红叶飞舞
桐城市唐湾镇三色融合描绘乡村振兴新图景来源人民网安徽频道原创稿唐湾镇位于桐城西部山区,这里生态环境优美特色资源丰富。近年来,该镇坚持生态立镇特色强镇旅游活镇人文兴镇战略,以建设红色引领,绿色发展,古色乡愁的三色小镇为突
第1000辆,顺利下线!还有这些新亮点近日,江苏前晨汽车科技有限公司自主研发的第一代智能网联新能源商用车EC1,迎来第1000辆量产车下线。智能电动轻卡EC1为江苏前晨汽车科技有限公司与重汽海西联合打造,采用了自主研发
奇瑞小蚂蚁,灵巧代步车,便宜好养活最近几年,微型车市场是越来越火热,很多汽车厂家都加入到了微型车的市场,除了传统品牌,还有很多合资品牌,甚至有很多新品牌的出现,这样的现状无疑说明一个现状,那就是用户对微型新能源汽车
红色之路满洲里红色国际秘密交通线满洲里红色国际秘密交通线是中国共产党历史上建立时间最早持续时间最长的红色交通线。这条交通线以中东铁路为主干哈尔滨为枢纽,满洲里绥芬河为节点,形成了一个组织严密高效运转的国际秘密交通
北京二手房价迎来四连涨尽管股市一不小心又跌破三千,但好在北京二手房价迎来四连涨。70城房价指数,北京9月二手房价格指数环比增0。4,仅次于上海涨的0。5,排名全国第二位。这样,9月涨0。4,78月均涨0
北京儿研所看病流程分享生孩子以前,不知道医院都是干什么的,不知道医院多少人,不知道看病什么步骤,直到生娃以后换季期间儿研所的孩子比幼儿园都多,我家幼儿园的时候是儿研所常客。提前做攻略,找好交通工具,早上
哥哥是皇帝,大伯是光绪,奶奶是慈禧,他却非常低调地活到2015年2015年4月,一位备受敬重的97岁老人安详地离开了人世,在老人的遗体悼念现场,上百名的爱新觉罗家族人士前来参与悼念。众所周知,爱新觉罗家族是中国最后一个封建王朝清朝的皇族。那么这
秋冬泡脚加点它,让你的脾胃和手脚温暖整个秋冬,还能帮助降血压大家好,我是米医生今天要给你介绍一味食材,可以说是秋冬家家必备。这个食材,四川人特别喜欢。因为四川盆地地区,常年不怎么见到太阳,湿气比较重。这个小小的食材可以说就是他们的太阳了。它
腰腿疼颈椎病关节炎,送你7个中成药,逼走骨缝中的风寒湿经常感觉头疼,脖子疼?腰腿胳膊关节疼?有颈椎病,关节炎,腰间盘突出,坐骨神经痛?那这篇文章可要收藏好了,中医认为之所以会出现肌肉关节疼痛,麻木,无非是因为风寒湿邪侵袭,或者自身气血