Чтение онлайн

на главную - закладки

Жанры

Основы программирования в 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
создано с помощью виджета QLi
n
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);

Поделиться:
Популярные книги

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Вонгозеро

Вагнер Яна
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Вонгозеро

Ведьма Вильхельма

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
8.67
рейтинг книги
Ведьма Вильхельма

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Как я строил магическую империю 7

Зубов Константин
7. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фантастика: прочее
5.00
рейтинг книги
Как я строил магическую империю 7

Лучший из худший 3

Дашко Дмитрий
3. Лучший из худших
Фантастика:
городское фэнтези
попаданцы
аниме
6.00
рейтинг книги
Лучший из худший 3

Штурмовик из будущего 3

Политов Дмитрий Валерьевич
3. Небо в огне
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Штурмовик из будущего 3

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье