赞
踩
在使用Qt设计的时候经常会看到QWidget空间的构造函数出现下面这样一句话:
QWidget(QWidget *parent=0,Qt::WindowFlags f=0);
QWidget *parent这段代码容易理解,是指父窗口部件的指定。
Qt::windowFlags f=0这段代码就有一点不解了,其实他是指定控件的窗口标识的。值为0即Qt::Widget。
那么就要好好说说控件的窗口标识的设置了。窗口标识由两部分组成,分别是窗口类型和窗口提示hint,一个窗口只有一个窗口类型。窗口提示定义了窗口的外观,可以有多个提示,窗口提示进行按位取或即可。
要说清楚Qt::WindowFlags枚举类型就必须清楚两个概念:窗口和部件
窗口:相对独立,有子窗口和父窗口之分,主要特点就是窗口有完整的边框。
部件:必须依赖父窗口而存在,依赖性较强,出现在父窗体的界面内部。
有了上述的概念就好解释Qt::WindowFlags枚举类型的用法了。首先判断一个控件是否是窗体,先根据参数parent的指定,要是值为0那么就可以判断其是一个窗口。否则需要根据Qt::WindowFlags枚举类型的值才可以判断其是否为窗口还是部件。
注意:窗口提示仅对顶层窗口有效。
枚举类型Qt::WindowFlags低位的1个字节用于定于窗口部件的窗口类型,0x00000000~0x00000012共定义了11个窗口类型。Qt::WindowFlags的高位字节定义了窗口提示,窗口提示能够进行按位或操作,例如:Qt::windowContextHelpButtonHint | Qt::windowMaximizeButtonHint
放Qt::WindowFlags的窗口提示部分全部为0时,窗口提示不起作用。当有一个窗口提示被应用时,若要其他的窗口提示起作用,则必须使用位或操作(如果窗口系统支持这些窗口提示的话)。例如:
- Qt::windowFlags flags = Qt::window;
- widget->setWindowFlags(flags);
widget窗口部件是一个窗口,它有一般窗口的外观(有窗口边框、标题栏、“最小化”按钮、“最大化”按钮和“关闭”按钮等),此时窗口提示不起作用。例如:
- flags |= Qt::WindowTitleHint;
- widget->setWindowFlags(flags);
上述代码的执行将会使窗口体术发挥作用。在Windows系统中,widget窗口部件是一个窗口。它仅有标题栏,没有“最小化”按钮、“最大化”按钮和“关闭”按钮等。而X11窗口管理器忽略了窗口提示Qt::WindowTitleHint,例如,在红旗Linux工作站和SUSE系统上,上述代码并不起作用。
在Windows系统中,如果需要天剑一个"最小化"按钮,则必须重新设置窗口部件的窗口标识,具体如下:
- flags |= Qt::WindowMinimizeButtonHint;
- widget->setWindowFlags;
如果要取消设置的窗口0提示,则具体代码如下:
- flags &= Qt::WindowType_Mask;
- widget->setWindowFlags(flags);
说了这么多了,我们来看一下具体怎么使用吧。
- this->setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
- //如果想去掉某个属性就直接加~就可以
- this->setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint);//去掉最大化按钮
- //调用窗体时显示在最前面
- widget->show();
- widget->activateWindow();
- widget->setWindowState((m_pPlot_View->get_m_pOscilloscope_view()->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
-
- //保持窗体霸道的显示在最前面
- widget->setWindowFlags(widget->windowFlags() | Qt::WindowStaysOnTopHint);
- widget->showNormal();
-
- //隐藏任务栏
- widget->setWindowFlags(widget->windowFlags() | Qt::Tool);
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。