窗口标志枚举类型用于指定小部件的各种窗口系统属性。其中一些标志取决于底层窗口管理器是否支持它们。以下是一些比较实用的窗口标志:
1、Qt::Widget:这是QWidget的默认类型。如果有父窗口则为子窗口小部件,如果没有父窗口则为独立窗口小部件。
2、Qt::Window:小部件是一个窗口,通常带有窗口系统框架和标题栏,而不管小部件是否有父级。如果有父级,小部件在顶层。默认标题栏有最小话、最大化、关闭按钮。如果小部件没有父级,则无法取消设置此标志。
QWidget * w = new QWidget(this);
w->setWindowFlags(Qt::Window);
w->setAttribute(Qt::WA_DeleteOnClose);//关闭后删除对象
w->show();
3、Qt::Dialog:小部件是一个对话框。默认标题栏有关闭按钮。这是QDialog的默认类型。如果有父级,小部件在顶层。
w.setWindowFlags(Qt::Dialog);
4、Qt::Popup:小部件是一个弹出式顶级窗口,即它是模态窗口。无标题栏、无关闭按钮。这种类型适合作为子窗口,当失去焦点时窗口会关闭,适合用作弹出提示信息的窗口。合适的用法:
QWidget * w = new QWidget(this);
w->setWindowFlags(Qt::Popup);
w->setGeometry(300,300,300,300);
w->setAttribute(Qt::WA_DeleteOnClose);//关闭后删除对象
w->show();
5、Qt::Tool:小部件是工具窗口。工具窗口通常是一个小窗口,有标题栏,标题栏上只有一个比一般窗口小的按钮。如果有父级,小部件在顶层。如果没有父级,也可以考虑使用Qt::WindowStaysOnTopHint。它也可以与Qt::FramelessWindowHint结合使用去掉标题栏。
6、Qt::ToolTip:工具提示小部件。没有标题栏。始终在顶层。失去焦点也不消失。比较合适的用法是把QLabel放到里面,设置提示信息,然后设置QTimer::singleShot让它过几秒钟消失。
7、Qt::FramelessWindowHint:生成无边框窗口。用户不能通过窗口系统移动或调整无边框窗口的大小。
8、Qt::CustomizeWindowHint:关闭默认窗口标题。
标题栏变得很窄,右键菜单没有了,按钮没有了。
9、Qt::WindowTitleHint:设置了CustomizeWindowHint之后保留标题栏:
setWindowFlags(Qt::CustomizeWindowHint |Qt::WindowTitleHint);
要两个一起位置。
10、Qt::WindowMinimizeButtonHint:最小化按钮。
11、Qt::WindowMaximizeButtonHint:最大化按钮。
12、Qt::WindowMinMaxButtonsHint:最大最小化两个按钮。
13、Qt::WindowCloseButtonHint:关闭按钮。
14、Qt::WindowContextHelpButtonHint:帮助按钮。
15、Qt::WindowStaysOnTopHint:窗口在顶层。
16、Qt::WindowStaysOnBottomHint:窗口在底层。