QDialog::QDialog ( QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 )
构造一个父对象为parent、名称为name的对话框。
如果modal为假(默认),这个对话框是非模式的并且应该使用show()来被显示。如果modal为真,这个对话框使用exec()来被显示,则它是模式的,也就是说会阻塞这个应用程序中其它窗口的输入。如果modal为真并且使用show()来被显示,则它是半模式的。
窗口部件f将被传递给QWidget的构造函数。
如果,例如,我们不想要对话框的标题栏中“这是什么”按钮,在f中传递WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu。
我们建议你传递一个非空的父对象。
请参考QWidget::setWFlags()和Qt::WidgetFlags。
Qt::WidgetFlags
这个枚举类型是用来指定窗口部件的窗口系统属性的。它们通常情况下没用,但是在一些场合是必需的。这些标记中的一些依赖于窗口管理器是否支持它们。
主要类型有
Qt::WType_TopLevel - 表明这个窗口部件是顶级的,通常有一个窗口系统框架和其它的。
Qt::WType_Dialog - 表明这个窗口部件是顶级的,并且应该被修饰为一个对话框(比如,作为特色,在标题栏中没有最大化和最小化按钮)。如果你想使用它作为一个模式对话框,它应该从另一个窗口中被运行,或者有一个父窗口并且这个标记必须和WShowModal一起使用。如果你使用了模式对话框,这个对话框将会防止应用程序的其它顶级窗口获得任何输入。WType_Dialog隐含了WType_TopLevel。我们指的是作为一个二级窗口作为顶级窗口需要有父窗口。(请参考WGroupLeader。)
Qt::WType_Popup - 表明这个窗口部件是一个弹出式的顶级窗口部件,比如它是模式的,但是供弹出菜单使用的窗口系统框架。WType_Popup隐含了WType_TopLevel。
Qt::WType_Desktop - 表明这个窗口部件是着明。请参考下面的WPaintDesktop。WType_Desktop隐含了WType_TopLevel。
这里还有大量的标记可以用来自定义顶级窗口的外观。这些对于其它窗口没有任何效果的:
Qt::WStyle_Customize - 表明WStyle_*标记应该被用来替换默认标记来构建窗口。
Qt::WStyle_NormalBorder - 给窗口一个普通边界。这个不能和WStyle_DialogBorder或WStyle_NoBorder一起使用。
Qt::WStyle_DialogBorder - 给窗口一个窄的对话框边界。这个不能和WStyle_NormalBorder或WStyle_NoBorder。
Qt::WStyle_NoBorder - 产生一个没有边界的窗口。注意:用户不可以通过窗口系统来移动或者重新定义无边界窗口的大小。这个标记不可以和WStyle_NormalBorder或WStyle_DialogBorder一起使用。在Windows中,这个标记正常工作。在X11中,这个标记的结果取决于窗口管理器和它们对于MOTIF和/或NETWM提示的理解的能力:现在存在的现代窗口管理器中的绝大部分都可以处理这些。通过WX11BypassWM,你可以完全地绕过窗口管理器。这样的结果就是无边界窗口根本无法被管理了(比如,除非你手工地调用setActiveWindow()就无法获得键盘输入)。
Qt::WStyle_NoBorderEx - 这个值是废弃的。它的效果和使用WStyle_NoBorder是一样的。
Qt::WStyle_Title - 给窗口一个标题栏。
Qt::WStyle_SysMenu - 添加一个窗口系统菜单。
Qt::WStyle_Minimize - 添加一个最小化按钮。注意:在Windows下,为了使它能够正常工作,它必须和WStyle_SysMenu一起组合使用。
Qt::WStyle_Maximize - 添加一个最大化按钮。注意:在Windows下,为了使它能够正常工作,它必须和WStyle_SysMenu一起组合使用。
Qt::WStyle_MinMax - 和WStyle_Minimize|WStyle_Maximize是一样的。注意:在Windows下,为了使它能够正常工作,它必须和WStyle_SysMenu一起组合使用。
Qt::WStyle_ContextHelp - 添加一个上下文帮助按钮到对话框上。
Qt::WStyle_Tool - 使这个窗口变为一个工具窗口。一个工具窗口经常是一个比含有正常标题栏和休息的窗口更小的窗口,很典型的用于工具按钮的集合。如果它有一个父窗口,工具窗口将总被放在它的上面。如果它没有父窗口,你需要考虑同时传递一个WStyle_StaysOnTop。如果窗口系统支持它,一个工具窗口将会被使用更亮的框架来修饰。它也可以和WStyle_NoBorder一起组合使用。
Qt::WStyle_StaysOnTop - 通知窗口系统这个窗口应该放在所有其它窗口的上面。
Qt::WStyle_Dialog - 表明这个窗口是它的父窗口(比如,一个对话框)的逻辑子窗口。这个窗口将没有自己的任务栏条目并且通过窗口系统它将被保持在它的父窗口上面。通常当它的父窗口最小化时,它也最小化。如果没有自定义,这个窗口将会被一个稍微简单一些的标题栏修饰。这个标记被QDialog使用。
修饰标记:
Qt::WDestructiveClose - 当窗口部件已经接收到closeEvent(),或者当窗口部件试图忽略closeEvent()但不能的时候,使Qt删除这个窗口部件。
Qt::WPaintDesktop - 把桌面的绘制事件给这个窗口部件。
Qt::WPaintUnclipped - 使在这个窗口部件上的所有的绘制操作都不能被省略。在它前面的这个窗口部件的子窗口部件或者其它窗口部件不能把它上面的绘制区域省略掉。
Qt::WPaintClever - 表明Qt不应该试图优化重绘这个窗口部件,但是相反,在窗口系统上直接传递重绘事件。(这样往往会产生更多的事件和更小的重绘区域。)
Qt::WResizeNoErase - 表明重新定义窗口部件的大小不应该删除它。这样允许比较聪明的重绘来避免闪烁。
Qt::WMouseNoMask - 表明即使这个窗口部件有一个障板,它想获得它的整个矩形区域内的鼠标时间。
Qt::WStaticContents - 表明这个窗口部件的内容是向西北方向对齐的并且是静态度。当重新定义大小的时候,这个窗口部件将只接收它自己之内的新的可见的部分的绘制事件。
Qt::WRepaintNoErase - 表明这个窗口绘制所有的象素。更新、滚动和焦点改变都不会因此删除这个窗口部件。这样允许比较聪明的重绘来避免闪烁。
Qt::WGroupLeader - 使这个窗口为一个组领导。一个组领导不应该有父窗口(比如,它应该是一个顶级窗口)。组领导的任何子孙窗口(直接的或见解的)都在它这个组里,其它窗口不在。如果你从一个组中显示一个次要的窗口(比如,显示一个最上端父窗口为组领导的窗口),对于组内其它窗口它是模式的,但对于组外的它是非模式的。
阅读(2392) | 评论(0) | 转发(0) |