Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

Описание Класса QDialog
[модуль QtGui]

Класс 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().

Клавиша Escape

Если пользователь нажимает клавишу 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.


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

enum QDialog::DialogCode

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

КонстантаЗначение
QDialog::Accepted1
QDialog::Rejected0

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

modal : bool

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

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

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

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

См. также QWidget::windowModality, show() и exec().

sizeGripEnabled : bool

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

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

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


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

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.

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

См. также show(), setExtension() и setOrientation().


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz