Литмир - Электронная Библиотека
Содержание  
A
A

 break;

case QMessageBox::No:

 // сделайте что-нибудь еще

 break;

}

Вы соединили операцией

OR
(
|
) коды кнопок с вариантами
Default
и
Escape
, чтобы задать стандартные действия, при нажатии клавиш <Enter> (или <Return>) и <Esc>. Результирующее диалоговое окно показано на рис. 17.8.

Основы программирования в Linux - image073.jpg

Рис. 17.8 

QInputDialog

Окно

QInputDialog
полезно для ввода пользователем отдельных значений, будь то текст, вариант раскрывающегося списка, целочисленное или действительное значение. У класса
QInputDialog
есть статические методы, например
QMessageBox
, создающие некоторые проблемы, поскольку у них слишком много параметров, к счастью, у большинства из них есть значения по умолчанию:

<b>#include &lt;qinputdialog.h&gt;</b>

<b>QString getText(const QString&amp; caption, const QString&amp; label,</b>

<b> QLineEdit::EchoMode mode=QLineEdit::Normal,</b>

<b> const QString&amp; text=QString::null,</b>

<b> bool* ok = 0, QWidget* parent = 0, const char * name = 0);</b>

<b>QString getItem(const QString&amp; caption, const QString&amp; label,</b>

<b> const QStringList&amp; list, int current=0, bool editable=TRUE,</b>

<b> bool* ok=0, QWidget* parent = 0, const char* name=0)</b>

<b>int getInteger(const QString&amp; caption, const QString&amp; label,</b>

<b> int num=0, int from = -2147483647, int to = 2147483647,</b>

<b> int step = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);</b>

<b>double getDouble(const QString&amp; caption, const QString&amp; label,</b>

<b> double num = 0, double from = -2147483647, double to = 2147483647,</b>

<b> int decimals = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);</b>

Для ввода строки текста напишите следующий фрагмент кода:

bool result;

QString text = QInputDialog::getText(&quot;Question&quot;, &quot;What is your Quest?:&quot;,

 QLineEdit::Normal, QString::null, &amp;result, this, &quot;input&quot;);

if (result) {

 doSomething(text);

} else {

 // Пользователь нажал Cancel

}

Как видно из рис. 17.9, окно

QInputDialog
создано с помощью виджета QLi
n
eEdit и кнопок OK и Cancel.

Основы программирования в Linux - image074.jpg

Рис. 17.9 

Диалоговое окно, созданное методом

QInputDialog::getText
, применяет виджет
QLineEdit
. Параметр режима редактирования, передаваемый в функцию
getText
, управляет способом отображения набираемого текста точно так же, как аналогичный параметр режима виджета
QLineEdit
. Вы можете также задать текст, выводимый по умолчанию, или оставить поле пустым, как показано на рис. 17.9. У всех окон
QInputDialog
есть кнопки OK и Cancel, и в метод передается указатель типа
bool
для обозначения нажатой кнопки — результат равен
TRUE
, если пользователь щелкает мышью кнопку OK.

Метод

getItem
с помощью раскрывающегося списка
QComboBox
предлагает пользователю список вариантов:

bool result;

QStringList options;

options &lt;&lt; &quot;London&quot; &lt;&lt; &quot;New York&quot; &lt;&lt; &quot;Paris&quot;;

QString city = QInputDialog::getItem(&quot;Holiday&quot;, &quot;Please select a

 destination:&quot;, options, 1, TRUE, &amp;result, this, &quot;combo&quot;);

if (result) selectDestination(city);

Созданное диалоговое окно показано на рис. 17.10.

Основы программирования в Linux - image075.jpg

Рис. 17.10 

Функции

getInteger
и
getDouble
действуют во многом аналогично, поэтому мы не будем на них останавливаться.

Применение qmake для упрощения написания make-файлов

Компиляция приложения с библиотеками KDE и Qt становится утомительным занятием, поскольку ваш make-файл получается очень сложным из-за необходимости использовать

moc
и иметь библиотеки здесь, там и везде. К счастью, Qt поставляется с утилитой
qmake
для создания ваших make-файлов.

Примечание

Если вы уже пользовались комплектом Qt, вам, возможно, знакома утилита

tmake
— более раннее (и теперь устаревшее) воплощение
qmake
, поставлявшееся с предыдущими версиями Qt.

Утилита

qmake
принимает в качестве входного файл .pro. Этот файл содержит самые существенные сведения, необходимые для компиляции, такие как исходные тексты, заголовочные файлы, результирующий двоичный файл и местонахождения библиотек KDE/Qt.

Типичный pro-файл среды KDE выглядит следующим образом:

TARGET = app

MOC_DIR = moc

OBJECTS_DIR = obj

INCLUDEPATH = /usr/include/kde

QMAKE_LIBDIR_X11 += /usr/lib

QMAKE_LIBS_X11 += -lkdeui -lkdecore

SOURCES = main.cpp window.cpp

313
{"b":"285844","o":1}