Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |
Класс QDialog является базовым классом для диалоговых окон. Далее...
#include <QDialog>
Наследует QWidget.
Наследуется Q3FileDialog, Q3ProgressDialog, Q3TabDialog, Q3Wizard, QAbstractPrintDialog, QColorDialog, QErrorMessage, QFileDialog, QFontDialog, QInputDialog, QMessageBox, QPageSetupDialog и QProgressDialog.
Класс QDialog является базовым классом для диалоговых окон.
Диалоговое окно - это окно верхнего уровня, предназначенное, главным образом, для выполнения коротких задач и непродолжительных взаимодействий с пользователем. QDialogs может быть модальным или не модальным. QDialogs поддерживает расширяемость и может предоставлять возвращаемое значение. Диалоговые окна имеют кнопку по умолчанию. QDialog также может иметь QSizeGrip в правом-нижнем углу (настраивается с использованием setSizeGripEnabled()).
Обратите внимание, что QDialog использует родительский виджет немного иначе, чем другие классы Qt. Диалог - всегда виджет верхнего уровня, но если он имеет родителя, то по умолчанию он расположен поверх и по центру родительского виджета (если он сам не виджет верхнего уровня). Он также доступен через панель задач родителя.
Модальный диалог - это диалог, который блокирует ввод в другие окна своего приложения. Пользователь должен завершить работу с диалогом и закрыть его прежде, чем получит доступ к другим окнам приложения. Диалоги, запрашивающие указание пользователем имени файла и устанавливающие настройки приложения, обычно модальны.
Обычно, модальный диалог отображается с помощью вызова функции exec(). При закрытии пользователем диалога, exec() для удобства предоставляет возвращаемое значение. Обычно, для закрытия диалога и получения соответствующего вначения, соединяют сигнал кнопки по умолчания, например, "OK", со слотом accept(), а кнопки "Cancel" со слотом reject(). В качестве альтернативы, Вы можете вызвать слот done() с Accepted или Rejected.
Также можно вызвать setModal(true) или setWindowModality(), а затем show(). В отличие от exec(), show() немедленно возвращает управления вызывающему. Вызов setModal(true) особенно полезен для диалогов, содержащих полосу прогресса, диалогов, которые должны имень возможность взаимодействия с пользователем (например, для отмены долгой операции). Если Вы используете show() совместно с setModal(true) то периодически, в течение обработки, должны вызывать QApplication::processEvents() для обеспечения возможности взаимодействия с пользователем. (См. QProgressDialog.)
Немодальный диалог - это диалог, работающий независимо от других окон этого приложения. Диалоги поиска и замены в текстовых редакторов часто немодальны, что позволяет взаимодействовать и с главным окном приложения и с диалогом.
Немодальные диалоги отображаются с использованием функции show(), которая немедленно возвращает управление вызывающему.
Кнопка диалога по умолчанию - это кнопка, которая нажимается при нажатии пользователем клавиши клавиатуры Enter (Return). Данная кнопка используется для указания того, что пользователь принимает установки диалога и хочет закрыть диалог. Для настройки кнопки по умолчанию используются QPushButton::setDefault(), QPushButton::isDefault() и QPushButton::autoDefault().
Если пользователь нажимает клавишу Esc в диалоге, то вызывается QDialog::reject(). Это заставляет окно закрыться: Сообщение о закрытии может быть игнорировано.
Расширяемость - это возможность отобразить диалог двумя способами: отображение части диалога, содержащей наиболее часто используемые опции, и оторажение полного диалога, содержащего все опции. Обычно, сперва отображается часть расширяемого диалога, содержащего фиксируемую кнопку "More". Если пользователь нажимает кнопку "More", то отображается полный диалог. Расширяемый виджет изменяет размеры в своем sizeHint(). Если его ориентация равна Qt::Horizontal то height() расширяемого виджета увеличится до height() диалога. Если ориентация равна Qt::Vertical, то width() расширяемого виджета увеличится до width() диалога. Расширяемость управляется с помощью setExtension(), setOrientation() и showExtension().
Модальные диалоги части используются в ситуациях, когда требуется возвращаемое значение, например, чтобы знать, нажал ли пользователь "OK" или "Cancel". Диалог может быть закрыт с помощью вызова слота accept() или reject(), и тогда exec() возвратит Accepted или Rejected соответственно. Вызов exec() возвращает результат работы диалога. В случае, если диалог не был закрыт, результат также доступен через result().
Модальный диалог:
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(); }
См. также QTabDialog, QWidget, QProgressDialog и GUI Design Handbook: Dialogs, Standard.
Значение, возвращаемое модальным диалогом.
Константа | Значение |
---|---|
QDialog::Accepted | 1 |
QDialog::Rejected | 0 |
Данное свойство указывает, будет ли диалог, отображаемый с помощью функции show(), модальным или немодальным.
По умолчанию данное свойство равно false и show() оторазит немодальным диалог. Установка данного свойства в true эквивалентна установке QWidget::windowModality в Qt::ApplicationModal.
exec() ингнорирует значение данного совойства и всегда отображает модальный диалог.
Функции доступа:
См. также QWidget::windowModality, show() и exec().
Данное свойство указывает, отображается ли значек расширения диалога.
Если данное свойство позволяет, QSizeGrip размещается в правом-нижнем углу диалога. По умолчанию значек расширения недоступен.
Функции доступа:
Создает диалог с родителем parent.
Диалог всегда является виджетом верхнего уровня, но, если он имеет родителя, то по умолчанию он занимает центральное положение отностительно родительского окна поверх него. Также, диалог доступен через панель задач родителя.
Флаги виджета f передаются в конструктор QWidget. Если, например, Вы не хотите иметь в строке заголовка виджета кнопку What's This, передайте в f Qt::WindowTitleHint | Qt::WindowSystemMenuHint.
См. также QWidget::setWindowFlags().
Разрушает QDialog удаляя все его дочерние объекты.
Скрывает модальный диалог и устанавливает код возврата в Accepted.
Данный сигнал испускается, когда диалог "принимается" пользователем (нажата кнопка OK или подобная) и когда вызывается accept() или done() с аргументом QDialog::Accepted.
Обратите внимание, что данный сигнал не испускается при сокрытии диалога с помощью hide() или setVisible(false), а также при удалении диалога в то время, когда он видим.
Данная функция добавлена в Qt 4.1.
См. также finished() и rejected().
Скрывает модальный диалог и устанавливает код возврата в r. Если данный диалог отображен с помощью exec(), то done() приводит к завершению цикла обработки сообщений и exec() возвращает r.
Как и в случае QWidget::close(), done() удаляет диалог, если флаг Qt::WA_DeleteOnClose установлен. Если диалог является главным виджетом приложения, то приложение завершается. Если диалог - поледнее закрываемое окно приложения, то испускается сигнал QApplication::lastWindowClosed().
См. также accept(), reject(), QApplication::activeWindow() и QApplication::quit().
Отображает диалог как модальный, блокируя ввод в другие окна пока диалог не будет закрыт. Данная функция возвращает DialogCode.
Пользователь не может взаимодействовать с другими окнами в данном приложении пока этот диалог не будет закрыт.
Обратите внимание на то, что exec() игнорирует значение свойства QWidget::windowModality и всегда открывает диалог как с Qt::ApplicationModal.
Возвращает расширение диалога или, если расширение не было определено, 0.
См. также setExtension().
Данный сигнал испускается при установке кода результата диалога (result) пользователем или с помощью done(), accept() или reject().
Обратите внимание, что данный сигнал не испускается при сокрытии диалога с помощью hide() или setVisible(false), а также при удалении диалога в то время, когда он видим.
Данная функция добавлена в Qt 4.1.
См. также accepted() и rejected().
Возвращает ориентацию расширения диалога.
См. также setOrientation().
Скрывает модальный диалог и устанавливает код возврата в Rejected.
Данный сигнал испускается, когда диалог "не принимается" пользователем (нажата кнопка Cancel или подобная) и когда вызывается reject() или done() с аргументом QDialog::Rejected.
Обратите внимание, что данный сигнал не испускается при сокрытии диалога с помощью hide() или setVisible(false), а также при удалении диалога в то время, когда он видим.
Данная функция добавлена в Qt 4.1.
См. также finished() и accepted().
Возвращает код возврата модального диалога, Accepted или Rejected.
Не вызывайте данную функцию, если диалог был создан с атрибутом Qt::WA_DeleteOnClose.
См. также setResult().
Устанавливает виджет extension в качестве расширения диалога, удаляя предыдущее расширение. Диалог становится собственником расширения. Обратите внимание, что, если Вы передаете 0 в данную функцию, то сущестующее расширение удаляется.
Данная функцию должна вызываться только если диалог закрыт.
См. также showExtension(), setOrientation() и extension().
Если orientation равно Qt::Horizontal, то расширение будет отображаться справа от основной части диалога. Если orientation равно Qt::Vertical, то расширение будет отображаться снизу от основной части диалога.
См. также orientation() и setExtension().
Устанавливает код возврата модального диалога в i.
См. также result().
Если showIt равно true, то расширение диалога отображается; в противном случае расширение скрывается.
Данный слот полезно соединить с сигналом QPushButton::toggled() виджета QPushButton.
Размер диалога с отображенным расширением не может изменяться.
См. также show(), setExtension() и setOrientation().
Copyright © 2005 Trolltech | Trademarks | Qt 4.1.0 |