QDialog类是对话框窗口的基类。 详情请见……
#include <qdialog.h>
继承了QWidget。
被QColorDialog、QErrorMessage、QFileDialog、QFontDialog、QInputDialog、QMessageBox、QProgressDialog、QTabDialog和QWizard继承。
所有成员函数的列表。
对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。
注意QDialog使用父窗口部件的方法和Qt中其它类稍微不同。对话框总是顶级窗口部件,但是如果它有一个父对象,它的默认位置就是父对象的中间。它也将和父对象共享工具条条目。
这里有三种有用的对话框:
对话框的“默认”按钮适当用户按下回车键或者换行键时被按下的按钮。这个按钮用来表示用户接受对话框的设置并且希望关闭这个对话框。使用QPushButton::setDefault()、QPushButton::isDefault()和QPushButton::autoDefault()来设置并且控制对话框的默认按钮。
扩展性是可以用两种方式来显示对话框:一个局部对话框用来显示通常最常用的选项,和一个显示所有选项的完全对话框。通常可扩展的对话框将初始化为一个局部对话框,但是有一个“更多”按钮。如果用户点击这个“更多”按钮,完全对话框将会出现。扩展性是由setExtension()、setOrientation()和showExtension()。
模式对话框通常用在需要返回值的地方,例如需要分清用户按下“OK”还是“Cancel”。对话框可以通过调用accept()或reject()槽来被关闭,并且exec()将返回适当的Accepted或Rejected。exec()返回这个对话框的结果。如果窗口还没有被销毁,这个结果也可以通过result()得到。如果WDestructiveClose标记被设置,那么当exec()返回时,对话框被删除。
模式对话框。
QFileDialog *dlg = new QFileDialog( workingDirectory, QString::null, 0, 0, TRUE ); dlg->setCaption( QFileDialog::tr( "Open" ) ); dlg->setMode( QFileDialog::ExistingFile ); QString result; if ( dlg->exec() == QDialog::Accepted ) { result = dlg->selectedFile(); workingDirectory = dlg->url(); } delete dlg; return result;
非模式对话框。在show()调用之后,控制返回到主事件循环中。
int main( int argc, char **argv ) { QApplication a( argc, argv );
int scale = 10;
LifeDialog *life = new LifeDialog( scale ); a.setMainWidget( life ); life->setCaption("Qt Example - Life"); life->show();
return a.exec(); }
半模式对话框的实例请参考QProgressDialog文档。
请参考QTabDialog、QWidget、QProgressDialog、GUI Design Handbook: Dialogs, Standard、抽象窗口部件类和对话框类。
模式对话框返回的值。
如果modal为假(默认),这个对话框是非模式的并且应该使用show()来被显示。如果modal为真,这个对话框使用exec()来被显示,则它是模式的,也就是说会阻塞这个应用程序中其它窗口的输入。如果modal为真并且使用show()来被显示,则它是半模式的。
窗口部件f将被传递给QWidget的构造函数。
如果,例如,我们不想要对话框的标题栏中“这是什么”按钮,在f中传递WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu。
我们建议你传递一个非空的父对象。
请参考QWidget::setWFlags()和Qt::WidgetFlags。
请参考reject()和done()。
实例:chart/setdataform.cpp。
如果对话框使用WDestructiveClose来被设置,done()也会销毁这个对话框。如果对话框是应用程序的主窗口部件,那么应用程序终止。
请参考accept()、reject()、QApplication::mainWidget()和QApplication::quit()。
请参考show()和result()。
实例:chart/chartform.cpp、i18n/main.cpp、network/networkprotocol/view.cpp、a href="qdir-example.html#x1805">qdir/qdir.cpp、showimg/showimg.cpp和wizard/main.cpp。
请参考setExtension()。
如果大小控制生效,返回真,否则返回假。详细情况请参考“sizeGripEnabled”属性。
请参考setOrientation()。
请参考accept()和done()。
返回模式对话框的结果代码,Accepted或Rejected。
如果对话框使用WDestructiveClose标记构造,不要调用这个函数。(无论如何,exec()返回结果代码。)
只有当对话框被隐藏时,这个函数才能被调用。
请参考showExtension()、setOrientation()和extension()。
请参考orientation()和setExtension()。
设置模式对话框的结果代码为i。
设置大小控制是否生效。详细情况请参考“sizeGripEnabled”属性。
对话框没有一个本地事件循环,所以你必须定时地调用QApplication::processEvents()来使对话框能够得到处理它的事件的机会。
如果在构造函数中,模式标记被设置为真,对话框将为半模式。
警告:
在Qt 2.x中,在一个模式对话框中调用show()进入一个本地事件循环并且像exec()一样工作,但是不返回exec()所返回的结果代码。Trolltech已经一直警告这样做是不被建议的。
请参考exec()。
实例:movies/main.cpp、showimg/showimg.cpp和sql/overview/form1/main.cpp。
从QWidget中重新实现的。
这个槽通常被连接到QPushButton的QButton::toggled()信号上。
如果对话框不是可视的,或者没有扩展,则什么都不会发生。
请参考show()、setExtension()和setOrientation()。
这个属性保存的是大小控制是否生效。
当这个属性生效时,QSizeGrip被放置到对话框的右下角。默认情况下,大小控制失效。
通过setSizeGripEnabled()设置属性值并且通过isSizeGripEnabled()来获得属性值。