L3.5 控件
L1 Qt::WindowFlags枚举类型
Qt::WindowFlags枚举类型有以下几种形式:
● Qt::Widget:QWidget构造函数的默认值,如果新的窗口部件没有父窗口部件,那么它是一个独立的窗口,否则是一个子窗口部件。
● Qt::Window:不管是否具有父窗口部件,新窗口部件都是一个窗口,通常具有一个窗口边框和一个标题栏。
● Qt::Dialog:新窗口部件是一个对话框,它是QDialog构造函数的默认值。
● Qt::Sheet:新窗口部件是一个Macintosh表单(sheet)。
● Qt::Drawer:新窗口部件是一个Macintosh抽屉(drawer)。
● Qt::Popup:新窗口部件是一个弹出式顶层窗口。
● Qt::Tool:新窗口部件是一个工具(tool)窗口,它通常是一个用于显示工具按钮的小窗口。如果一个工具窗口具有父窗口部件,它将显示在父窗口部件的上面,否则的话,相当于使用了Qt::WindowStaysOnTopHint提示。
● Qt::ToolTip:新窗口部件是一个提示窗口,没有标题栏和窗口边框。
● Qt::SplashScreen:新窗口部件是一个欢迎窗口(splash screen),它是QSplashScreen构造函数的默认值。
● Qt::Desktop:新窗口部件是桌面,它是QDesktopWidget构造函数的默认值。
● Qt::SubWindow:新窗口部件是一个子窗口,而不管该窗口部件是否具有父窗口部件。此外,Qt还定义了一些控制窗口外观的窗口提示(这些窗口提示只对顶层窗口有效)。
● Qt::MSWindowsFiredSizeDialogHint:为Windows系统上的窗口装饰一个窄的对话框边框,通常这个提示用于固定大小的对话框。
● Qt::MSWindowsOwnDC:为Windows系统上的窗口添加自身的显示上下文(display context)菜单。
● Qt::X11BypassWindowManagerHint:完全忽视窗口管理器,它的作用是产生一个根本不被管理的无窗口边框的窗口(此时,用户无法使用键盘进行输入,除非手动调用QWidget::activateWindow()函数)。
● Qt::FramelessWindowHint:产生一个无窗口边框的窗口,此时用户无法移动该窗口和改变它的大小。
● Qt::CustomizeWindowHint:关闭默认的窗口标题提示。
● Qt::WindowTitleHint:为窗口装饰一个标题栏。
● Qt::WindowSystemMenuHint:为窗口添加一个窗口系统菜单,并尽可能地添加一个关闭按钮。
● Qt::WindowMinimizeButtonHint:为窗口添加一个最小化按钮。
● Qt::WindowMaximizeButtonHint:为窗口添加一个最大化按钮。
● Qt::WindowMinMaxButtonsHint:为窗口添加一个最小化按钮和一个最大化按钮。
● Qt::WindowContextHelpButtonHint:为窗口添加一个上下文帮助按钮。
● Qt::WindowStaysOnTopHint:告知窗口系统,该窗口应该停留在所有其他窗口的上面。
● Qt::WindowType_Mask:一个用于提取窗口标志中的窗口类型部分的掩码。
枚举类型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);
上述代码的执行,将会使窗口提示发挥作用。在WindowsXP系统中,widget窗口部件是一个窗口,它仅仅具有标题栏,没有最小化按钮、最大化按钮和关闭按钮等。而在X11窗口管理器忽略了窗口提示Qt::WindowTitleHint,例如,在红旗Linux5.0工作站和SuSE10.2系统上,上述代码并不起作用。
在WindowsXP系统中,如果要添加一个最小化按钮,必须重新设置窗口部件的窗口标志(在红旗Linux5.0工作站和SuSE10.2系统上,下面的窗口提示也被忽略了),具体如下:
flags |= Qt:: WindowMinimizeButtonHint; widget->setWindowFlags(flags);
如果要取消设置的窗口提示,则
flags &= Qt:: WindowType_Mask; widget->setWindowFlags(flags);