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

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

Жанры

Основы программирования в 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);

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

Дневники 1930-1931

Пришвин Михаил Михайлович
Документальная литература:
биографии и мемуары
4.75
рейтинг книги
Дневники 1930-1931

Последний из Братства. Бессмертный Меч

Кондратюк Глеб
5. Последний из Братства
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Последний из Братства. Бессмертный Меч

Серебряная колдунья

Саммерс Элла
2. Династия Феникс
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Серебряная колдунья

Системный разведчик. Инфильтрация. Дилогия

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

"Избранные историко-биографические романы". Компиляция. Книги 1-10

Джордж Маргарет
Проза:
историческая проза
5.00
рейтинг книги
Избранные историко-биографические романы. Компиляция. Книги 1-10

Интернет-журнал "Домашняя лаборатория", 2008 №2

Журнал «Домашняя лаборатория»
Дом и Семья:
хобби и ремесла
сделай сам
5.00
рейтинг книги
Интернет-журнал Домашняя лаборатория, 2008 №2

Те, кто внизу. Донья Барбара. Сеньор Президент

Астуриас Мигель Анхель
133. Библиотека всемирной литературы
Проза:
классическая проза
5.50
рейтинг книги
Те, кто внизу. Донья Барбара. Сеньор Президент

Deus vult

Рокотов Алексей
3. Путь князя
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Deus vult

Егерь. Прилив. Книга 10

Скиба Николай
10. Зверолов
Фантастика:
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Егерь. Прилив. Книга 10

Шайтан Иван 6

Тен Эдуард
6. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
7.43
рейтинг книги
Шайтан Иван 6

Чудесный переплет. Часть 1

Малиновская Оксана Васильевна
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Чудесный переплет. Часть 1

История россии 1917–2009

Вдовин Александр Иванович
Научно-образовательная:
история
6.25
рейтинг книги
История россии 1917–2009

"Фантастика 2024-68". Компиляция. Книги 1-22

Фролов Андрей
Фантастика 2024. Компиляция
Фантастика:
фэнтези
боевая фантастика
космическая фантастика
попаданцы
альтернативная история
рпг
5.00
рейтинг книги
Фантастика 2024-68. Компиляция. Книги 1-22

Трилогия «Двуединый»

Сазанов Владимир Валерьевич
Фантастика:
фэнтези
6.12
рейтинг книги
Трилогия «Двуединый»