标题:【提问】QDialog怎么去掉标题栏的关闭按钮和?
作者:hukuking
日期:2005-12-09 16:01
内容:
QT中的对话框,怎么去掉标题栏右边的关闭按钮(就是那个叉叉),还有帮助的问号?
属性里面好像不能设置。
请大家帮忙赐教!谢谢!
#1 [nanhu_007 12-10 22:50]
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 - 产生一个没有边界的窗口。注意:用户 ..
#2 [XChinux 02-20 22:56]
樓主可看看KDE下的KDM這個程序源碼,它就是無邊框的。