вторник, 25 марта 2014 г.

Qt: Пользовательские диалоговые окна

В статье описаны главные моменты при создании пользовательских окон.

1. Изменение внешнего вида окна

Чтобы изменить внешний вид диалогового окна, нужно при создании установить соответствующий тип окна. Например:

Dialog dlg(this);
dlg.setWindowFlags(Qt::Tool);
dlg.exec();

Для более тонкой настройки внешнего вида окна, следует комбинировать доступные флаги окна. Например, чтобы создать окно без каких либо кнопок в заголовке, нужно использовать такой код:

Dialog dlg(0);
dlg.setWindowFlags(Qt::Window |  Qt::CustomizeWindowHint | Qt::WindowTitleHint);
dlg.exec();

Список доступных типов и флагов, можно посмотреть здесь.

2. Изменение размера окна при открытии

Чтобы максимизировать диалоговое окно при открытии, следует изменить состояние окна с помощью такого кода:

Dialog dlg(this);
dlg.setWindowState(Qt::WindowMaximized);
dlg.exec();

Все доступные состояния окна можно посмотреть здесь.

3. Обработка событий кнопок QDialogButtonBox

При создании пользовательских диалоговых окон, часто приходится пользоваться классом QDialogButtonBox. Этот класс представляет из себя контейнер стандартных кнопок, таких как: Ok, Cancel, Save for all, Save, Ignore и т.п. В этой статье описано как узнать на какую именно кнопку нажал пользователь и как обработать это событие.

При нажатии кнопки на компоненте buttonBox посылается сигнал clicked(QAbstractButton*). Нужно перехватить этот сигнал и обработать следующим кодом:

void Dialog::pressButton(QAbstractButton * button)
{
    if ( button == ui->buttonBox->button(QDialogButtonBox::Yes) )
        QMessageBox::information(this, "Information", "Yes button pressed");
}

Аналогичным образом обрабатываются и другие кнопки.

Удачи!

Комментариев нет:

Отправить комментарий