| 头: | #include <QDialog> |
| 继承: | QWidget |
| 继承者: | Q3FileDialog , Q3ProgressDialog , Q3TabDialog , Q3Wizard , QAbstractPrintDialog , QColorDialog , QErrorMessage , QFileDialog , QFontDialog , QInputDialog , QMessageBox , QPageSetupDialog , QPrintPreviewDialog , QProgressDialog ,和 QWizard |
| enum | DialogCode { Accepted, Rejected } |
| QDialog (QWidget * parent = 0, Qt::WindowFlags f = 0) | |
| ~QDialog () | |
| bool | isSizeGripEnabled () const |
| int | result () const |
| void | setModal (bool modal ) |
| void | setResult (int i ) |
| void | setSizeGripEnabled (bool) |
| virtual QSize | minimumSizeHint () const |
| virtual void | setVisible (bool visible ) |
| virtual QSize | sizeHint () const |
| virtual void | accept () |
| virtual void | done (int r ) |
| int | exec () |
| void | open () |
| virtual void | reject () |
| void | accepted () |
| void | finished (int result ) |
| void | rejected () |
| virtual void | closeEvent (QCloseEvent * e ) |
| virtual void | contextMenuEvent (QContextMenuEvent * e ) |
| virtual bool | event (QEvent * e ) |
| virtual bool | eventFilter (QObject * o , QEvent * e ) |
| virtual void | keyPressEvent (QKeyEvent * e ) |
| virtual void | resizeEvent (QResizeEvent *) |
| virtual void | showEvent (QShowEvent * event ) |
The QDialog 类是对话框窗口的基类。
对话框窗口是顶级窗口,主要用于短期任务和与用户简短交流。QDialogs 可以是模态 (或非模态) 的。QDialogs 可以提供 返回值 ,且它们可以有 默认按钮 。QDialog 也可拥有 QSizeGrip 在其右下角,使用 setSizeGripEnabled ().
注意,
QDialog
(和任何其它 Widget 拥有类型
Qt::Dialog
) 使用父级 Widget 稍微异于其它 Qt 类。对话框始终是顶层 Widget,但若有父级,默认位置居中父级的顶层 Widget 顶部 (若它本身不在顶层)。它还会共享父级的任务栏条目。
使用重载 QWidget::setParent () 函数改变所有权对于 QDialog 小部件。此函数允许明确设置要重设父级的 Widget 的窗口标志;使用重载函数将清零 Widget 的窗口系统特性指定窗口标志 (尤其,将重置 Qt::Dialog 标志)。
A modal 对话框是阻塞同一应用程序中其它可见窗口输入的对话框。通常用于从用户请求文件名 (或用于设置应用程序首选项) 的,是模态对话框。对话框可以为 应用程序模态 (默认) 或 窗口模态 .
打开应用程序模态对话框时,用户必须完成与对话框的交互并关闭对话框,在它们可以访问应用程序中的任何其它窗口之前。窗口模态对话框仅阻塞访问对话框关联的窗口,允许用户继续使用应用程序中的其它窗口。
显示模态对话框的最常见方式,是调用它的
exec
() 函数。当用户关闭对话框时,
exec
() 将提供有用
返回值
。通常,为关闭对话框并返回适当值,连接默认按钮,如
OK
,到
accept
() 槽和
Cancel
按钮到
reject
() 槽。另外,可以调用
done
() 槽采用
接受
or
Rejected
.
替代是调用 setModal (true) 或 setWindowModality (),然后 show ()。不像 exec (), show () 将控制立即返回给调用者。调用 setModal (true) 对于进度对话框尤其有用,用户必须拥有与对话框交互的能力 (如:取消长时间运行的操作)。若使用 show () 和 setModal (true) 一起以履行长时间操作,必须调用 QApplication::processEvents () 在处理期间周期性地使用户能够与对话框进行交互。(见 QProgressDialog )。
A modeless 对话框是独立于同一应用程序中其它窗口运转的对话框。文字处理程序中的查找 替换对话框经常是非模态的,以允许用户与应用程序主窗口和对话框进行交互。
非模态对话框的显示是使用 show (),将控制立即返回给调用者。
若援引 show() 函数在隐藏对话框之后,对话框将显示在其原始位置。这是因为窗口管理器决定程序员未明确放置窗口的位置。要保留用户已移动对话框的位置,保存其位置在 closeEvent() 处理程序,然后把对话框移到该位置,在再次展示它之前。
对话框的 default 按钮是用户按下 Enter (Return) 键时按下的按钮。此按钮用于表示用户接受对话框设置并想要关闭对话框。使用 QPushButton::setDefault (), QPushButton::isDefault () 和 QPushButton::autoDefault () 以设置并控制对话框的默认按钮。
若用户在对话框中按下 Esc 键, QDialog::reject () 会被调用。这将导致窗口被关闭: 关闭事件 不可以为 ignored .
可扩展性是以 2 种方式展示对话框的能力:展示最常用选项的部分对话框,和展示所有选项的完整对话框。通常,可扩展对话框最初以部分对话框形式出现,但带有 更多 触发按钮。若用户按下 更多 按钮,展开对话框。 扩展范例 展示如何使用 Qt 达成可扩展对话框。
模态对话框经常用于要求返回值的状况,如,指示用户是否按下
OK
or
Cancel
。可以关闭对话框通过调用
accept
() 或
reject
() 槽,和
exec
() 会返回
接受
or
Rejected
酌情。
exec
() 调用返回对话框的结果。结果还可获取自
result
() 若对话框未被销毁。
为修改对话框的关闭行为,可以重实现函数 accept (), reject () 或 done ()。 closeEvent() 函数才应被重实现,以保留对话框的位置 (覆写标准关闭或拒绝行为)。
模态对话框:
void EditorWindow::countWords() { WordCountDialog dialog(this); dialog.setWordCount(document().wordCount()); dialog.exec(); }
非模态对话框:
void EditorWindow::find() { if (!findDialog) { findDialog = new FindDialog(this); connect(findDialog, SIGNAL(findNext()), this, SLOT(findNext())); } findDialog->show(); findDialog->raise(); findDialog->activateWindow(); }
另请参阅 QDialogButtonBox , QTabWidget , QWidget , QProgressDialog , GUI 设计手册:对话框、标准 , 扩展范例 ,和 标准对话框范例 .
由模态对话框返回的值。
| 常量 | 值 |
|---|---|
QDialog::Accepted
|
1
|
QDialog::Rejected
|
0
|
This property holds whether show() should pop up the dialog as modal or modeless.
By default, this property is false and show () pops up the dialog as modeless. Setting his property to true is equivalent to setting QWidget::windowModality to Qt::ApplicationModal .
exec () 忽略此特性的值,并始终以模态方式弹出。
访问函数:
| bool | isModal () const |
| void | setModal (bool modal ) |
另请参阅 QWidget::windowModality , show (),和 exec ().
This property holds whether the size grip is enabled.
A QSizeGrip 被放置在对话框右下角,当此属性被启用时。默认情况下,大小握把是禁用的。
访问函数:
| bool | isSizeGripEnabled () const |
| void | setSizeGripEnabled (bool) |
构造对话框采用父级 parent .
对话框始终是顶层 Widget,但若有父级,默认位置居中父级顶部。它还会共享父级的任务栏条目。
Widget 标志 f 被传递给 QWidget 构造函数。例如,若不想要对话框标题栏中的 What's This 按钮,传递 Qt::WindowTitleHint | Qt::WindowSystemMenuHint in f .
另请参阅 QWidget::setWindowFlags ().
销毁 QDialog ,删除其所有子级。
[virtual slot]
void
QDialog::
accept
()
隐藏模态对话框并将结果代码设为
接受
.
[signal]
void
QDialog::
accepted
()
此信号被发射当已接受对话框由用户或通过调用 accept () 或 done () 采用 QDialog::Accepted 自变量。
注意,此信号 not 被发射当隐藏对话框采用 hide () 或 setVisible (false)。这包括可见时删除对话框。
该函数在 Qt 4.1 引入。
另请参阅 finished () 和 rejected ().
[virtual protected]
void
QDialog::
closeEvent
(
QCloseEvent
*
e
)
重实现自 QWidget::closeEvent ().
[virtual protected]
void
QDialog::
contextMenuEvent
(
QContextMenuEvent
*
e
)
重实现自 QWidget::contextMenuEvent ().
[virtual slot]
void
QDialog::
done
(
int
r
)
关闭对话框并将其结果代码设为 r 。若此对话框的展示是采用 exec (),done() 导致本地事件循环的完成,且 exec () 返回 r .
就像 QWidget::close (),done() 删除对话框若 Qt::WA_DeleteOnClose 标志有设置。若对话框是应用程序 main 小部件,应用程序终止。若对话框是最后关闭窗口, QApplication::lastWindowClosed () 信号发射。
另请参阅 accept (), reject (), QApplication::activeWindow (),和 QApplication::quit ().
[virtual protected]
bool
QDialog::
event
(
QEvent
*
e
)
重实现自 QObject::event ().
[virtual protected]
bool
QDialog::
eventFilter
(
QObject
*
o
,
QEvent
*
e
)
重实现自 QObject::eventFilter ().
[slot]
int
QDialog::
exec
()
把对话框展示成 模态对话框 ,阻塞直到用户关闭它。函数返回 DialogCode 结果。
若对话框为 应用程序模态 ,用户无法与同一应用程序中的任何其它窗口交互,直到关闭对话框为止。若对话框为 窗口模态 ,仅阻塞与父级窗口的交互,当打开对话框时。默认情况下,对话框为应用程序模态。
另请参阅 open (), show (), result (),和 setWindowModality ().
[signal]
void
QDialog::
finished
(
int
result
)
此信号被发射当对话框的 result 代码有设置,由用户或通过调用 done (), accept (),或 reject ().
注意,此信号 not 被发射当隐藏对话框采用 hide () 或 setVisible (false)。这包括可见时删除对话框。
该函数在 Qt 4.1 引入。
另请参阅 accepted () 和 rejected ().
[virtual protected]
void
QDialog::
keyPressEvent
(
QKeyEvent
*
e
)
重实现自 QWidget::keyPressEvent ().
[虚拟]
QSize
QDialog::
minimumSizeHint
() const
重实现自 QWidget::minimumSizeHint ().
[slot]
void
QDialog::
open
()
把对话框展示成 窗口模态对话框 ,立即返回。
该函数在 Qt 4.5 引入。
另请参阅 exec (), show (), result (),和 setWindowModality ().
[virtual slot]
void
QDialog::
reject
()
隐藏模态对话框并将结果代码设为
Rejected
.
[signal]
void
QDialog::
rejected
()
此信号被发射当已拒绝对话框由用户或通过调用 reject () 或 done () 采用 QDialog::Rejected 自变量。
注意,此信号 not 被发射当隐藏对话框采用 hide () 或 setVisible (false)。这包括可见时删除对话框。
该函数在 Qt 4.1 引入。
另请参阅 finished () 和 accepted ().
[virtual protected]
void
QDialog::
resizeEvent
(
QResizeEvent
*)
重实现自 QWidget::resizeEvent ().
一般而言,返回模态对话框的结果代码
接受
or
Rejected
.
注意: When used from QMessageBox instance the result code type is QMessageBox::StandardButton
不要调用此函数,若构造对话框具有 Qt::WA_DeleteOnClose 属性。
另请参阅 setResult ().
将模态对话框的结果代码设为 i .
注意: 推荐使用之一值定义通过 QDialog::DialogCode .
另请参阅 result ().
[虚拟]
void
QDialog::
setVisible
(
bool
visible
)
重实现自 QWidget::setVisible ().
[virtual protected]
void
QDialog::
showEvent
(
QShowEvent
*
event
)
重实现自 QWidget::showEvent ().
[虚拟]
QSize
QDialog::
sizeHint
() const
重实现自 QWidget::sizeHint ().