Qt setWindowFlags与setAttribute

一、setWindowFlags窗口样式解析

在继承QWidget类的构造函数中,经常会出现这句:

QWidget(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

其中:
QWidget *parent = Q_NULLPTR 是指父窗口部件的指定。
Qt::WindowFlags f = Qt::WindowFlags() 它是指定控件的窗口标识的。值为0即Qt::Widget。

窗口标识 WindowFlags

窗口标识由两部分组成的。分别是:

  • 窗口类型type:
    类型用于为widget指定各种窗口系统属性。一个widget只有一个窗口类型。
  • 窗口提示hint
    widget 可以包含零个或多个提示。用于自定义顶级窗口的外观。
    窗口提示定义了窗口的外观,可以有多个提示,窗口提示进行按位取或即可。

widget标志存储在Qt :: WindowFlags类型中,该类型存储标志的OR组合。

窗口和部件

  • 窗口:相对独立的,有子窗口和父窗口之分,主要特点就是窗口有完整的边框,把没有嵌入到其他部件中的部件称为窗口,一般的窗口都有边框和标题栏。
  • 部件:必须依赖于父窗口而存在,依赖性较强,出现在父窗体的界面内部,它们嵌入在别的窗口中。

Qt::WindowFlags枚举类型

此枚举类型用于为widget指定各种窗口系统属性。它们相当不寻常,但在少数情况下是必要的。其中一些标志取决于底层窗口管理器是否支持它们。

名称描述
Qt::Widget这是QWidget的默认类型。有父窗口就是部件,没有就是窗口。另请参见Qt :: Window和Qt :: SubWindow。
Qt::Window表示widget是一个窗口,具有窗口边框和标题,无论widget是否具有父窗口。请注意,如果widget没有父标记,则无法取消设置此标记。
Qt::Dialog表示widges是作为对话框窗口(即,标题栏中通常没有最大化或最小化按钮)。这是QDialog的默认类型。如果要将其用作模式对话框,则应从另一个窗口启动它,或者使用父窗口并与QWidget :: windowModality属性一起使用。如果您将其设置为模态,则对话框将阻止应用程序中的其他顶级窗口获取任何输入。我们引用一个顶级窗口,它将父级作为辅助窗口。
Qt::Sheet表示该窗口是macOS上的工作表。由于使用工作表意味着窗口模态,推荐的方法是使用QWidget :: setWindowModality()或QDialog :: open()。
Qt::Drawer表示窗口小部件是macOS上的抽屉。
Qt::Popup表示widget是弹出式的顶级窗口,即它是模态的,但具有适合弹出菜单的窗口系统框架。
Qt::Tool表示widget是工具窗口。工具窗口通常是一个小窗口,其标题栏和装饰比通常小,通常用于工具按钮的集合。如果有父项,则工具窗口将始终保持在其上。如果没有父级,您可以考虑使用Qt :: WindowStaysOnTopHint。如果窗户系统支持它,工具窗口可以用更轻的框架装饰。它也可以与Qt :: FramelessWindowHint结合使用。在macOS上,工具窗口对应于NSPanel类窗口。这意味着窗口位于正常窗口之上,因此无法在其上放置普通窗口。默认情况下,当应用程序处于非活动状态时,工具窗口将消失。这可以通过控制Qt :: WA_MacAlwaysShowToolWindow属性。
Qt::ToolTip表示窗口小部件是工具提示。
Qt::SplashScreen表示该窗口是闪屏。这是QSplashScreen的默认类型。
Qt::Desktop表示此小组件是桌面。这是QDesktopWidget的类型。
Qt::SubWindow表示此窗口小部件是子窗口,例如QMdiSubWindow窗口小部件。
Qt::CoverWindow表示该窗口表示一个封面窗口,该窗口在某些平台上最小化应用程序时显示。

还有许多标志可用于自定义顶级窗口的外观。这些对其他窗口没有影响::

名称描述
Qt::MSWindowsFixedSizeDialogHint在Windows上为窗口提供精简的对话框边框。此样式传统上用于固定大小的对话框。
Qt::FramelessWindowHint生成无边框窗口。用户无法通过窗口系统移动或调整无边框窗口的大小。
Qt::WindowStaysOnTopHint通知窗口系统窗口应该保持在所有其他窗口之上
Qt::CustomizeWindowHint关闭默认窗口标题提示
Qt::WindowTitleHint给窗口一个标题栏。
Qt::WindowSystemMenuHint添加窗口系统菜单,可能还有关闭按钮(例如在Mac上)。如果您需要隐藏或显示关闭按钮,则使用起来更加便携WindowCloseButtonHint。
Qt::WindowMinimizeButtonHint添加最小化按钮
Qt::WindowMaximizeButtonHint添加最大化按钮
Qt::WindowMinMaxButtonsHint添加最小化和最大化按钮。
Qt::WindowCloseButtonHint添加关闭按钮。
Qt::WindowContextHelpButtonHint向对话框添加上下文帮助按钮。

具体特定的样式参考qtwidgets-windowflags-example
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
等等。。

二、setAttribute

用于设置各种窗口小部件(widget)的属性。使用QWidget :: setAttribute()设置和清除属性,并使用QWidget :: testAttribute()进行查询,尽管有些具有下面提到的特殊便利功能。

名称描述
Qt::WA_AcceptDrops允许将拖放操作中的数据拖放到窗口小部件上(请参阅QWidget :: setAcceptDrops())。
Qt::WA_AlwaysShowToolTips为非活动窗口启用工具提示。
Qt::WA_DeleteOnClose当窗口小部件接受close事件时,Qt删除此窗口小部件(请参阅QWidget :: closeEvent())。
Qt::WA_Disabled表示窗口小部件已禁用,即它不接收任何鼠标或键盘事件。还有一个getter函数QWidget :: isEnabled()。这由Qt内核设置/清除。
Qt::WA_DontShowOnScreen表示窗口小部件已隐藏或不是可查看桌面的一部分。
Qt::WA_MouseTracking表示窗口小部件已启用鼠标跟踪。请参阅QWidget :: mouseTracking。
Qt::WA_NoMouseReplay用于弹出窗口小部件(popup)。指示弹出窗口小部件关闭时不应重播最近的鼠标按下事件。该标志由小部件的作者设置,并在每次小部件接收到新的鼠标事件时由Qt内核清除。
Qt::WA_TranslucentBackground表示窗口小部件应具有半透明背景,即窗口小部件的任何非不透明区域将是半透明的(因为窗口小部件将具有Alpha通道。)设置此标志会导致设置WA_NoSystemBackground。在Windows上,窗口小部件还需要设置Qt :: FramelessWindowHint窗口标志。该标志由小部件的作者设置或清除。

以上是常用的,

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值