添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

环境:Qt Creator5.5.1

Qt窗口设置的时候经常会用到setWindowFlags(Qt::WindowFlags type)函数。通过这个函数可以设置一个或多个窗口标志类型。可以指定窗口类型、窗口外观、自定义窗口控件。下面这三个表格中的参数是都可以使用的,如果想设置多个属性,可以通过参数或的形式实现。常用的类型我用粗体标注出来了。

参数类型:

下面这些枚举类型用于为小部件指定各种 窗口系统属性

参数 描述
Qt::Widget 这是QWidget部件的默认类型。这种类型的小部件如果有父部件就是子部件,如果没有父部件就是独立窗口。
Qt::Window 表明小部件是一个窗口,不管小部件是否有父部件,通常都会带有一个窗口系统框架和一个标题栏。注意,如果小部件没有父部件,则不可能取消这个类型的设置。
Qt::Dialog 表明小部件是一个应该装饰成对话框的窗口(例如,标题栏中通常没有最大化或最小化按钮)。这是QDialog部件的默认类型。如果你想使用它作为模态对话框,它应该从另一个窗口启动,或者有一个父窗口并与QWidget::windowModality属性一起使用。如果将其设置为模态,该对话框将阻止应用程序中的其他顶级窗口获得任何输入。
Qt::Sheet 表明该窗口是一个Macintosh工作表。因为使用工作表意味着窗口模式,所以建议使用QWidget::setWindowModality()或QDialog::open()。
Qt::Drawer 表明小部件是Macintosh抽屉。
Qt::Popup 表明小部件是一个弹出式顶级窗口,即它是模态的,但是有一个适合于弹出式菜单的窗口系统框架。
Qt::Tool 表明小部件是一个工具窗口。工具窗口通常是一个小窗口,其标题栏和装饰比通常的小,通常用于工具按钮的集合。如果有父窗口,工具窗口将始终保持在它的顶部。如果没有父类,你也可以考虑使用Qt::WindowStaysOnTopHint将它保持在顶部。
Qt::ToolTip 表明小部件是一个工具提示。这在内部用于实现工具提示。
Qt::SplashScreen 表示该窗口为启动页面。这是QSplashScreen部件的默认类型。
Qt::Desktop 表明此小部件为桌面组件。这是QDesktopWidget的类型。
Qt::SubWindow 表明此小部件是一个子窗口,例如QMdiSubWindow小部件。
Qt::ForeignWindow 表示此窗口对象是一个句柄,表示由另一个进程或使用本机代码手动创建的本机平台窗口。
Qt::CoverWindow 表明窗口代表一个覆盖窗口,可以保证任务栏不会显示两个进程。

如果小部件的类型是Qt:: widget或Qt::SubWindow,通过设置变成了一个窗口(Qt:: window, Qt::Dialog等),那么它的起始位置将会是桌面位置(0,0)的地方。如果小部件是一个窗口(Qt:: window, Qt::Dialog等),通过设置变成了Qt:: widget或Qt::SubWindow,那么它的位置将会是相对于其父小部件的位置(0,0)的地方。

当更改窗口的标志时,此函数调用setParent(),会导致小部件被隐藏。必须调用show()使小部件再次可见。

下面这些枚举类型用于为小部件指定 窗口的外观 。这些对其他窗口没有影响。

参数 描述
Qt::MSWindowsFixedSizeDialogHint 在Windows上给窗口一个薄的对话框边框。这种风格通常用于固定大小的对话框。
Qt::MSWindowsOwnDC 在Windows上为窗口提供自己的显示上下文。
Qt::BypassWindowManagerHint 这个标志可以用来告诉平台插件“所有”窗口管理器协议应该被禁用。根据应用程序运行的操作系统和运行的窗口管理器,该标志的行为会有所不同。这个标志可以用来获得一个没有配置设置的本机窗口。
Qt::X11BypassWindowManagerHint 完全绕过窗口管理器。这将导致一个完全不受管理的无边界窗口(即,除非你手动调用QWidget::activateWindow(),否则没有键盘输入)。
Qt::FramelessWindowHint 生成一个 无边框 的窗口。用户不能通过窗口系统移动或调整无边界窗口的大小。在X11上,该标志的结果取决于窗口管理器及其理解Motif和/或NETWM提示的能力。大多数现有的窗口管理器都可以处理这个问题。
Qt::NoDropShadowWindowHint 在支持平台上禁用窗口投影。

下面这些枚举类型用于为小部件指定 窗口控件

这个标志必须被设置以允许WindowTitleHint, WindowSystemMenuHint, WindowMinimizeButtonHint, WindowMaximizeButtonHint和WindowCloseButtonHint标志。

参数 描述
Qt::CustomizeWindowHint 关闭默认窗口标题提示。
Qt::WindowTitleHint 给窗口一个标题栏。
Qt::WindowSystemMenuHint 添加一个窗口系统菜单。
Qt::WindowMinimizeButtonHint 添加一个最小化按钮。
Qt::WindowMaximizeButtonHint 添加一个最大化按钮。
Qt::WindowMinMaxButtonsHint 添加一个最小化和一个最大化按钮。
Qt::WindowCloseButtonHint 添加一个关闭按钮。
Qt::WindowContextHelpButtonHint 在对话框中添加上下文帮助按钮。
Qt::MacWindowToolBarButtonHint 在OS X(苹果操作系统)上增加了一个工具栏按钮(即,在有工具栏的窗口的右上角的长方形按钮)。
Qt::WindowFullscreenButtonHint 在OS X(苹果操作系统)上增加了一个全屏按钮。
Qt::BypassGraphicsProxyWidget 如果你想让你的widget始终是桌面的顶级widget,你可以设置这个标志,不管父widget是否嵌入到场景中。
Qt::WindowShadeButtonHint 如果底层窗口管理器支持最小化按钮,则添加一个阴影按钮来代替它。
Qt::WindowStaysOnTopHint 通知窗口系统,该窗口应该保持在所有其他窗口的顶部。
Qt::WindowStaysOnBottomHint 通知窗口系统,窗口应该保持在所有其他窗口的底部。
Qt::WindowOkButtonHint 在对话框的窗口装饰中添加一个OK按钮。仅支持Windows CE。
Qt::WindowCancelButtonHint 将“取消”按钮添加到对话框的窗口装饰中。仅支持Windows CE。
Qt::WindowTransparentForInput 通知窗口系统此窗口仅用于输出(显示某些内容)而不接受输入。
Qt::WindowOverridesSystemGestures 通知窗口系统,该窗口实现了自己的一组手势,并且应该禁用系统级的手势,例如三指桌面切换。
Qt::WindowDoesNotAcceptFocus 通知窗口系统此窗口不应接收输入焦点。
Qt::MaximizeUsingFullscreenGeometryHint 通知窗口系统,当最大化窗口时,它应该尽可能多地使用可用的屏幕几何图形,包括可能被系统UI覆盖的区域,如状态栏或应用程序启动器。
Qt::WindowType_Mask 用于提取窗口标志的窗口类型部分的掩码。