(1)窗体属性 :
//这个枚举类型用于指定各种小部件属性。属性通过`OWidget:setAttribute()、进行设置和清除,
//并通过Widget::testAttribute()、进行查询,尽管有些属性有专门的便捷函数,下文将予以说明。
enum WidgetAttribute {
WA_Disabled = 0,
WA_UnderMouse = 1,
WA_MouseTracking = 2,
// Formerly, 3 was WA_ContentsPropagated.
WA_OpaquePaintEvent = 4,
WA_StaticContents = 5,
WA_LaidOut = 7,
WA_PaintOnScreen = 8,
WA_NoSystemBackground = 9,
WA_UpdatesDisabled = 10,
WA_Mapped = 11,
// Formerly, 12 was WA_MacNoClickThrough.
WA_InputMethodEnabled = 14,
WA_WState_Visible = 15,
WA_WState_Hidden = 16,
WA_ForceDisabled = 32,
WA_KeyCompression = 33,
WA_PendingMoveEvent = 34,
WA_PendingResizeEvent = 35,
WA_SetPalette = 36,
WA_SetFont = 37,
WA_SetCursor = 38,
WA_NoChildEventsFromChildren = 39,
WA_WindowModified = 41,
WA_Resized = 42,
WA_Moved = 43,
WA_PendingUpdate = 44,
WA_InvalidSize = 45,
// Formerly 46 was WA_MacBrushedMetal and WA_MacMetalStyle.
WA_CustomWhatsThis = 47,
WA_LayoutOnEntireRect = 48,
WA_OutsideWSRange = 49,
WA_GrabbedShortcut = 50,
WA_TransparentForMouseEvents = 51,
WA_PaintUnclipped = 52,
WA_SetWindowIcon = 53,
WA_NoMouseReplay = 54,
WA_DeleteOnClose = 55,
WA_RightToLeft = 56,
WA_SetLayoutDirection = 57,
WA_NoChildEventsForParent = 58,
WA_ForceUpdatesDisabled = 59,
WA_WState_Created = 60,
WA_WState_CompressKeys = 61,
WA_WState_InPaintEvent = 62,
WA_WState_Reparented = 63,
WA_WState_ConfigPending = 64,
WA_WState_Polished = 66,
// Formerly, 67 was WA_WState_DND.
WA_WState_OwnSizePolicy = 68,
WA_WState_ExplicitShowHide = 69,
WA_ShowModal = 70, // ## deprecated since since 4.5.1 but still in use :-(
WA_MouseNoMask = 71,
WA_NoMousePropagation = 73, // for now, might go away.
WA_Hover = 74, //强制Qt在鼠标进入或离开该小部件时生成绘制事件。
//这一特性通常在实现自定义样式时使用;有关详情,请参阅“样式”示例。
WA_InputMethodTransparent = 75, // Don't reset IM when user clicks on this (for virtual keyboards on embedded)
WA_QuitOnClose = 76,
WA_KeyboardFocusChange = 77,
WA_AcceptDrops = 78,
WA_DropSiteRegistered = 79, // internal
WA_WindowPropagation = 80,
WA_NoX11EventCompression = 81,
WA_TintedBackground = 82,
WA_X11OpenGLOverlay = 83,
WA_AlwaysShowToolTips = 84,
WA_MacOpaqueSizeGrip = 85,
WA_SetStyle = 86,
WA_SetLocale = 87,
WA_MacShowFocusRect = 88,
WA_MacNormalSize = 89, // Mac only
WA_MacSmallSize = 90, // Mac only
WA_MacMiniSize = 91, // Mac only
WA_LayoutUsesWidgetRect = 92,
WA_StyledBackground = 93, // internal
// Formerly, 94 was WA_MSWindowsUseDirect3D.
WA_CanHostQMdiSubWindowTitleBar = 95, // Internal
WA_MacAlwaysShowToolWindow = 96, // Mac only
WA_StyleSheet = 97, // internal
WA_ShowWithoutActivating = 98,
WA_X11BypassTransientForHint = 99,
WA_NativeWindow = 100,
WA_DontCreateNativeAncestors = 101,
// Formerly WA_MacVariableSize = 102, // Mac only
WA_DontShowOnScreen = 103,
// window types from http://standards.freedesktop.org/wm-spec/
WA_X11NetWmWindowTypeDesktop = 104,
WA_X11NetWmWindowTypeDock = 105,
WA_X11NetWmWindowTypeToolBar = 106,
WA_X11NetWmWindowTypeMenu = 107,
WA_X11NetWmWindowTypeUtility = 108,
WA_X11NetWmWindowTypeSplash = 109,
WA_X11NetWmWindowTypeDialog = 110,
WA_X11NetWmWindowTypeDropDownMenu = 111,
WA_X11NetWmWindowTypePopupMenu = 112,
WA_X11NetWmWindowTypeToolTip = 113,
WA_X11NetWmWindowTypeNotification = 114,
WA_X11NetWmWindowTypeCombo = 115,
WA_X11NetWmWindowTypeDND = 116,
// Formerly, 117 was WA_MacFrameworkScaled.
WA_SetWindowModality = 118,
WA_WState_WindowOpacitySet = 119, // internal
WA_TranslucentBackground = 120,
WA_AcceptTouchEvents = 121,
WA_WState_AcceptedTouchBeginEvent = 122,
WA_TouchPadAcceptSingleTouchEvents = 123,
WA_X11DoNotAcceptFocus = 126,
// Formerly, 127 was WA_MacNoShadow
WA_AlwaysStackOnTop = 128,
WA_TabletTracking = 129,
WA_ContentsMarginsRespectsSafeArea = 130,
WA_StyleSheetTarget = 131,
// Add new attributes before this line
WA_AttributeCount
};
(2)对该枚举属性的使用在这里的俩成员函数 :

(3) 状态枚举量 :

(4)窗体的类型与外观显示枚举量 :

++ QT 文档里的代码实现 :
//这个枚举类型用于为该小部件指定各种窗口系统属性。
//这些属性相当特殊,但在某些情况下是必要的。其中一些标志取决于底层窗口管理器是否支持这些属性。
enum Qt::WindowType { //描述窗体的类型,用于 QMainWindow的构造函数里
Widget = 0x00000000, //这是QWidget的默认类型。
//如果此类Widget有父Widget,则它们是父Widget的子Widget;
//如果没有父Widget,则它们是独立的窗口。另请参阅Qt::Window和Qt::SubWindow。
Window = 0x00000001, //表示该小部件是一个窗口,通常带有窗口系统框架和标题栏,
//而无论该小部件是否有父级。请注意,如果该小部件没有父级,则无法取消设置此标志。
Dialog = 0x00000002 | Window, //表示该小部件是一个应被装饰为对话框的窗口
//(即,标题栏中通常没有最大化或最小化按钮)。这是QDialog的默认类型。
//如果您想将其用作态对话框,则应从另一个窗口启动,
//或者具有父窗口并使用QWidget::windowModality属性。
//如果将其设置为模态模式,则该对话框将阻止应用程序中的其他顶级窗口获得任何输入。
//我们指的具有父窗口的顶级窗口称为子窗口。
Sheet = 0x00000004 | Window, //表示窗口在macOs上是一个sheet。
//由于使用sheet意味着窗口模式,
//推荐的方法是使用QWidget::setWindowModality()或QDialog::open()。
Drawer = Sheet | Dialog, //表示该小部件是macOS上的抽屉。
//此功能已过时。设置标志没有效果。
Popup = 0x00000008 | Window, //表示该小部件是一个弹出式顶级窗口,
//即它是模态的,但具有适合弹出菜单的窗口系统框架frame,边框。
Tool = Popup | Dialog, //表明该小部件是一个工具窗口。
//工具窗口通常是一个较小的窗口,带有比常规更小的标题栏和装饰,通常用于工具按钮的集合。
//如果有父窗口,则该工具窗口将始终保持在父窗口的上方。
//如果没有父窗口,可以考虑同时使用Qt::WindowStaysOnTopHint。
//如果窗口系统支持,则工具窗口可以装饰得带有相对较浅的边框。
//它还可以与 Qt::FramelessWindowHint 结合使用。
//在 macOS 上,工具窗口对应于 NSPanel类窗口。这意味着该窗口存在于高于普通窗口的层级上,
//因此无法在其上方放置普通窗口。默认情况下,当应用程序处于非活动状态时,工具窗口将消失。
//这可以通过 Qt::WAMacAlwaysShowToolWindow 属性进行控制。
ToolTip = Popup | Sheet , //表示该小部件是一个工具提示。
//这用于内部实现工具提示。
SplashScreen = ToolTip | Dialog, //泼;泼洒;泼溅到…上;以醒目方式刊登;
//表示窗口是一个启动画面。这是QSplashScreen的默认类型。
Desktop = 0x00000010 | Window, //????????
SubWindow = 0x00000012, //表示此小部件是一个子窗口,
//例如QMdiSubWindow小部件。
ForeignWindow = 0x00000020 | Window, //表示此窗口对象是一个句柄,
//代表由其他进程创建的原生平台窗口或通过手动使用原生代码创建的窗口。
CoverWindow = 0x00000040 | Window, //表示窗口代表一个覆盖窗口,
//在某些平台上应用程序最小化时会显示。
WindowType_Mask = 0x000000ff, //用于提取窗口标志中窗口类型部分的掩码。
//还有一些标志可以用来自定义顶级窗口的外观。这些对其他窗口没有影响:
MSWindowsFixedSizeDialogHint = 0x00000100,
//在Windows上为窗口提供一个细的对话框边框。这种样式传统上用于固定大小的对话框。
//注:在多显示器环境中,不建议使用此标志。这是因为系统会强制窗口在跨屏幕移动时保持其原生大小。
//在采用不同分辨率的显示器时,这一点尤其不理想。
MSWindowsOwnDC = 0x00000200, //display context
//在Windows上为窗口提供自己的显示上下文。
BypassWindowManagerHint = 0x00000400, //绕过 bypass
//这个标志可用于向平台插件示意“所有”窗口管理器协议都应被禁用。
//该标志的行为会根据应用程序运行的操作系统以及运行的窗口管理器而有所差异。
//该标志可用于获取一个未配置的本机窗口.
X11BypassWindowManagerHint = BypassWindowManagerHint, //等于上面的
//完全绕过窗口管理器。这将导致一个无边框窗口,完全不受管理
//(即,除非您手动调用QWidget::activateWindow否则不会接收到键盘输入),
FramelessWindowHint = 0x00000800,
//生成一个无边框窗口。用户无法通过窗口系统移动或调整无边框窗口的大小。
//在X11上该标志的生效取决于窗口管理器及其理解Motif和/或NETWM提示的能力。
//大多数现有的现代窗口管理器都能处理这种情况。
WindowTitleHint = 0x00001000, //为窗口添加一个标题栏。
WindowSystemMenuHint = 0x00002000,
//添加一个窗口系统菜单,可能还有一个关闭按钮(例如在Mac上)。
//如果您需要隐藏或显示关闭按钮,使用WindowCloseButtonHint会更方便。
WindowMinimizeButtonHint = 0x00004000, //添加一个最小化按钮。
//在某些平台上,这表示 Qt::WindowSystemMenuHint 使其工作。
WindowMaximizeButtonHint = 0x00008000, //添加一个最大化按钮。
//添加一个最大化按钮。在某些平台上,这表示 Qt::WindowSystemMenuHint 使其工作。
WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
//添加一个最小化和最大化按钮。在某些平台上,这表示 Qt::窗口系统菜单提示才能使其工作。
WindowContextHelpButtonHint = 0x00010000, //在对话框中添加一个上下文帮助按钮。
//在某些平台上,这意味着需要Qt::WindowSystemMenuHint才能使其工作。
WindowShadeButtonHint = 0x00020000,
//如果底层窗口管理器支持,用一个遮阳按钮代替最小化按钮。
WindowStaysOnTopHint = 0x00040000,
//告知窗口系统该窗口应保持在所有其他窗口的上方。
//请注意,在X11上的某些窗口管理器中,
//您还需要通过 Qt::X11BypassWindowManagerHint参数才能使此标志正常工作。
//注意:在Windows上,这仅适用于无边框或全屏窗口。
WindowTransparentForInput = 0x00080000,
//通知窗口系统,该窗口仅用于输出(显示内容),而不用于接收输入。
//因此,输入事件应照常传递,就好像该窗口不存在一样。
WindowOverridesSystemGestures = 0x00100000,
//告知窗口系统,该窗口实现了其自己的手势集,而系统级手势(例如三指桌面切换)应被禁用。
WindowDoesNotAcceptFocus = 0x00200000,
//通知窗口系统此窗口不应接收输入焦点。
MaximizeUsingFullscreenGeometryHint = 0x00400000,
//通知窗口系统,当最大化窗口时,应尽可能多地使用可用的屏幕几何区域,
// 包括可能被系统UI(如状态栏或应用启动器)覆盖的区域。
//这可能会导致窗口被置于这些系统U1之下,但这并非板上钉钉之事,具体取决于平台是否支持这一特性。
//当启用此标志时,用户有责任考虑QScreen::availableGeometry()的值,
// 以确保应用中的任何需要用户交互的UI元素不被系统UI覆盖。
CustomizeWindowHint = 0x02000000, //关闭默认窗口标题提示。
//CustomizeWindowHint`标志用于启用窗口控件的定制。
//必须将此标志设置为允许修改`WindowTitleHint、WindowSystemMenuHint`、
//WindowMinimizeButtonHint、`WindowMaximizeButtonHint、
//和WindowCloseButtonHint`这些标志。
WindowStaysOnBottomHint = 0x04000000,
//通知窗口系统该窗口应保持在所有其他窗口的底部。
//注:在X11上,此提示仅在支持 NETWM_STATE_BELOW 元素的窗口管理器中生效。
//如果一个始终位于底部的窗口有父窗口,那么父窗口也将保持在底部。
//目前,此窗口提示在macOS上尚未实现。
WindowCloseButtonHint = 0x08000000,
MacWindowToolBarButtonHint = 0x10000000,
//在macos上添加一个工具栏按钮(即,位于具有工具栏的窗口右上角的椭圆形按钮)。
BypassGraphicsProxyWidget = 0x20000000,
//这可以防止窗口及其子元素在父窗口已经嵌入的情况下自动嵌入到QGraphicsProxyWidget中。
//如果您希望您的窗口始终在桌面上保持顶层窗口状态,无论其父窗口是否嵌入场景,都可以设置此标志。
NoDropShadowWindowHint = 0x40000000, //在支持平台上禁用窗口下拉阴影。
WindowFullscreenButtonHint = 0x80000000 //在macOs上添加一个全屏按钮。
};
Q_DECLARE_FLAGS(WindowFlags, WindowType)
Q_DECLARE_OPERATORS_FOR_FLAGS(WindowFlags)
(5) 给个标志的彩色版,因为太重要了 :






(6)
谢谢
记录Qt窗体组件属性枚举量WA_

被折叠的 条评论
为什么被折叠?



