Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6, 12, 23.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
65.69 Кб
Скачать

Возвращаемое Значение (Модальные Диалоги)

Модальные диалоги части используются в ситуациях, когда требуется возвращаемое значение, например, чтобы знать, нажал ли пользователь "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();

}

См. также QTabDialogQWidgetQProgressDialog и GUI Design Handbook: Dialogs, Standard.

Описание Типов Членов

enum QDialog::DialogCode

Значение, возвращаемое модальным диалогом.

Константа

Значение

QDialog::Accepted

1

QDialog::Rejected

0

Описание Свойств

modal : bool

Данное свойство указывает, будет ли диалог, отображаемый с помощью функции show(), модальным или немодальным.

По умолчанию данное свойство равно false и show() оторазит немодальным диалог. Установка данного свойства в true эквивалентна установке QWidget::windowModality вQt::ApplicationModal.

exec() ингнорирует значение данного совойства и всегда отображает модальный диалог.

Функции доступа:

  • bool isModal () const

  • void setModal ( bool modal )

См. также QWidget::windowModalityshow() и exec().

sizeGripEnabled : bool

Данное свойство указывает, отображается ли значек расширения диалога.

Если данное свойство позволяет, QSizeGrip размещается в правом-нижнем углу диалога. По умолчанию значек расширения недоступен.

Функции доступа:

  • bool isSizeGripEnabled () const

  • void setSizeGripEnabled ( bool )

Описание Функций-Членов

QDialog::QDialog ( QWidget * parent = 0, Qt::WFlags f = 0 )

Создает диалог с родителем parent.

Диалог всегда является виджетом верхнего уровня, но, если он имеет родителя, то по умолчанию он занимает центральное положение отностительно родительского окна поверх него. Также, диалог доступен через панель задач родителя.

Флаги виджета f передаются в конструктор QWidget. Если, например, Вы не хотите иметь в строке заголовка виджета кнопку What's This, передайте в f Qt::WindowTitleHint |Qt::WindowSystemMenuHint.

См. также QWidget::setWindowFlags().

QDialog::~QDialog ()

Разрушает QDialog удаляя все его дочерние объекты.

void QDialog::accept ()   [virtual slot]

Скрывает модальный диалог и устанавливает код возврата в Accepted.

См. также reject() и done().

void QDialog::accepted ()   [signal]

Данный сигнал испускается, когда диалог "принимается" пользователем (нажата кнопка OK или подобная) и когда вызывается accept() или done() с аргументом QDialog::Accepted.

Обратите внимание, что данный сигнал не испускается при сокрытии диалога с помощью hide() или setVisible(false), а также при удалении диалога в то время, когда он видим.

Данная функция добавлена в Qt 4.1.

См. также finished() и rejected().

void QDialog::done ( int r )   [virtual slot]

Скрывает модальный диалог и устанавливает код возврата в r. Если данный диалог отображен с помощью exec(), то done() приводит к завершению цикла обработки сообщений иexec() возвращает r.

Как и в случае QWidget::close(), done() удаляет диалог, если флаг Qt::WA_DeleteOnClose установлен. Если диалог является главным виджетом приложения, то приложение завершается. Если диалог - поледнее закрываемое окно приложения, то испускается сигнал QApplication::lastWindowClosed().

См. также accept(), reject(), QApplication::activeWindow() и QApplication::quit().

int QDialog::exec ()   [slot]

Отображает диалог как модальный, блокируя ввод в другие окна пока диалог не будет закрыт. Данная функция возвращает DialogCode.

Пользователь не может взаимодействовать с другими окнами в данном приложении пока этот диалог не будет закрыт.

Обратите внимание на то, что exec() игнорирует значение свойства QWidget::windowModality и всегда открывает диалог как с Qt::ApplicationModal.

См. также show() и result().

QWidget * QDialog::extension () const

Возвращает расширение диалога или, если расширение не было определено, 0.

См. также setExtension().

void QDialog::finished ( int result )   [signal]

Данный сигнал испускается при установке кода результата диалога (result) пользователем или с помощью done(), accept() или reject().

Обратите внимание, что данный сигнал не испускается при сокрытии диалога с помощью hide() или setVisible(false), а также при удалении диалога в то время, когда он видим.

Данная функция добавлена в Qt 4.1.

См. также accepted() и rejected().

Qt::Orientation QDialog::orientation () const

Возвращает ориентацию расширения диалога.

См. также setOrientation().

void QDialog::reject ()   [virtual slot]

Скрывает модальный диалог и устанавливает код возврата в Rejected.

См. также accept() и done().

void QDialog::rejected ()   [signal]

Данный сигнал испускается, когда диалог "не принимается" пользователем (нажата кнопка Cancel или подобная) и когда вызывается reject() или done() с аргументом QDialog::Rejected.

Обратите внимание, что данный сигнал не испускается при сокрытии диалога с помощью hide() или setVisible(false), а также при удалении диалога в то время, когда он видим.

Данная функция добавлена в Qt 4.1.

См. также finished() и accepted().

int QDialog::result () const

Возвращает код возврата модального диалога, Accepted или Rejected.

Не вызывайте данную функцию, если диалог был создан с атрибутом Qt::WA_DeleteOnClose.

См. также setResult().

void QDialog::setExtension ( QWidget * extension )

Устанавливает виджет extension в качестве расширения диалога, удаляя предыдущее расширение. Диалог становится собственником расширения. Обратите внимание, что, если Вы передаете 0 в данную функцию, то сущестующее расширение удаляется.

Данная функцию должна вызываться только если диалог закрыт.

См. также showExtension(), setOrientation() и extension().

void QDialog::setOrientation ( Qt::Orientation orientation )

Если orientation равно Qt::Horizontal, то расширение будет отображаться справа от основной части диалога. Если orientation равно Qt::Vertical, то расширение будет отображаться снизу от основной части диалога.

См. также orientation() и setExtension().

void QDialog::setResult ( int i )

Устанавливает код возврата модального диалога в i.

См. также result().

void QDialog::showExtension ( bool showIt )   [slot]

Если showIt равно true, то расширение диалога отображается; в противном случае расширение скрывается.

Данный слот полезно соединить с сигналом QPushButton::toggled() виджета QPushButton.

Размер диалога с отображенным расширением не может изменяться.