Основы программирования в Linux
Шрифт:
const QString& text, int button0, int button1, int button2=0);
int critical(QWidget *parent, const QString& caption,
const QString& text, int button0, int button1, int button2=0);
Можно выбрать кнопки из списка готовых кнопок
QMessageBox
, соответствующих значениям, возвращаемым статическими методами:
QMessageBox::Ok
;
QMessageBox::Cancel
;
QMessageBox::Yes
;
QMessageBox::No
;
QMessageBox::Abort
;
QMessageBox::Retry
;
QMessageBox::Ignore
. Типичный
QMessageBox
будет похож на приведенный далее фрагмент программного кода:
int 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;
break;
case QMessageBox::No:
// сделайте что-нибудь еще
break;
}
Вы соединили операцией
OR
(|
) коды кнопок с вариантами Default
и Escape
, чтобы задать стандартные действия, при нажатии клавиш <Enter> (или <Return>) и <Esc>. Результирующее диалоговое окно показано на рис. 17.8. Рис. 17.8
QInputDialog
Окно
QInputDialog
полезно для ввода пользователем отдельных значений, будь то текст, вариант раскрывающегося списка, целочисленное или действительное значение. У класса QInputDialog
есть статические методы, например QMessageBox
, создающие некоторые проблемы, поскольку у них слишком много параметров, к счастью, у большинства из них есть значения по умолчанию:
#include <qinputdialog.h>
QString getText(const QString& caption, const QString& label,
QLineEdit::EchoMode mode=QLineEdit::Normal,
const QString& text=QString::null,
bool* ok = 0, QWidget* parent = 0, const char * name = 0);
QString getItem(const QString& caption, const QString& label,
const QStringList& list, int current=0, bool editable=TRUE,
bool* ok=0, QWidget* parent = 0, const char* name=0)
int getInteger(const QString& caption, const QString& label,
int num=0, int from = -2147483647, int to = 2147483647,
int step = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);
double getDouble(const QString& caption, const QString& label,
double num = 0, double from = -2147483647, double to = 2147483647,
int decimals = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);
Для
bool result;
QString text = QInputDialog::getText("Question", "What is your Quest?:",
QLineEdit::Normal, QString::null, &result, this, "input");
if (result) {
doSomething(text);
} else {
// Пользователь нажал Cancel
}
Как видно из рис. 17.9, окно
QInputDialog
создано с помощью виджета QLin
eEdit и кнопок OK и Cancel. Рис. 17.9
Диалоговое окно, созданное методом
QInputDialog::getText
, применяет виджет QLineEdit
. Параметр режима редактирования, передаваемый в функцию getText
, управляет способом отображения набираемого текста точно так же, как аналогичный параметр режима виджета QLineEdit
. Вы можете также задать текст, выводимый по умолчанию, или оставить поле пустым, как показано на рис. 17.9. У всех окон QInputDialog
есть кнопки OK и Cancel, и в метод передается указатель типа bool
для обозначения нажатой кнопки — результат равен TRUE
, если пользователь щелкает мышью кнопку OK. Метод
getItem
с помощью раскрывающегося списка QComboBox
предлагает пользователю список вариантов:
bool result;
QStringList options;
options << "London" << "New York" << "Paris";
QString city = QInputDialog::getItem("Holiday", "Please select a
destination:", options, 1, TRUE, &result, this, "combo");
if (result) selectDestination(city);
Поделиться:
Популярные книги
Тринадцатый V
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 24
24. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Лихие. Смотрящий
2. Бригадир
Фантастика:
попаданцы
5.00
рейтинг книги
Хозяин оков VI
6. Хозяин Оков
Фантастика:
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Неудержимый. Книга II
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 10
10. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Ярар. Начало
1. Ярар
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Седьмой Рубеж IV
4. 5000 лет темноты
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Жена со скидкой, или Случайный брак
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Прайм. Хомори
2. Легенда
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Газлайтер. Том 28
28. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Темная сторона. Том 2
10. Гибрид
Фантастика:
технофэнтези
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Адвокат империи
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Лекарь Империи 10
10. Лекарь Империи
Фантастика:
городское фэнтези
боевая фантастика
аниме
попаданцы
5.00