Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
delete dialog;Когда метод
execУчтите, что когда вызывается
execНемодальные диалоговые окна слегка отличаются от обычных основных окон прежде всего тем, что располагаются поверх своего родительского окна, совместно используют их элемент на панели задач и автоматически скрываются, когда вызван слот
acceptrejectДля отображения немодального диалогового окна вызывайте метод
showQMainWindowMyDialog *dialog = new MyDialog(this, "mydialog");dialog->show();Функция
showMyDialog::MyDialog(QWidget *parent, const char *name) : QDialog(parent, name) { ... connect(ok_pushbutton, SIGNAL(clicked()), this, SLOT(OkClicked())); connect(cancel_pushbutton, SIGNAL(clicked()), this, SLOT(CancelClicked()));}MyDialog::OkClicked() { // Выполните что-либо}MyDialog::CancelClicked() { // Выполните что-либо другое}Как и в случае модального окна, диалоговое окно автоматически скрывается при нажатии кнопки.
Для создания полумодального диалогового окна вы должны задать флаг модального режима в конструкторе
QDialogshow<b>QDialog(QWidget *parent=0, const char *name=0, bool modal=FALSE, WFlags f=0);</b>
Вы не задаете в модальном диалоговом окне флаг модального режима равным
TRUEexecКонструктор вашего диалогового окна будет выглядеть примерно следующим образом:
MySMDialog::MySMDialog(QWidget *parent, const char *name): QDialog(parent, name, TRUE) { ...}После того как вы определили ваше диалоговое окно, вызовите функцию
showQApplication::processEventsMySMDialog *dialog = MySMDialog(this, "semimodal");dialog->show();while (processing) { doSomeProcessing(); app->processEvents(); if (dialog->wasCancelled()) break;}Перед продолжением выполнения проверьте, не уничтожено ли диалоговое окно. Имейте в виду, что функция
wasCancelledQDialogКомплект Qt предоставляет готовые подклассы класса
QDialogQMessageBox
QMessageBoxУ класса
QMessageBox<b>#include <qmessagebox.h></b><b>int information(QWidget *parent, const QString& caption,</b><b> const QString&text, int button0, int button1=0, int button2=0);</b><b>int warning(QWidget *parent, const QString& caption,</b><b> const QString& text, int button0, int button1, int button2=0);</b><b>int critical(QWidget *parent, const QString& caption,</b><b> const QString& text, int button0, int button1, int button2=0);</b>Можно выбрать кнопки из списка готовых кнопок
QMessageBox□
QMessageBox::Ok□
QMessageBox::Cancel□
QMessageBox::Yes□
QMessageBox::No□
QMessageBox::Abort□
QMessageBox::Retry□
QMessageBox::IgnoreТипичный пример использования окна
QMessageBoxint result = QMessageBox::information(this, "Engine Room Query", "Do you wish to engage the HyperDrive?", QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape);switch (result) {case QMessageBox::Yes: hyperdrive->engage();
