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

ЖАНРЫ

Основы программирования в Linux
Шрифт:

#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);

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

Рис. 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

HEADERS = window.h

Вы задаете результирующий двоичный файл, временные каталоги moc и объектных файлов, путь к библиотеке KDE и исходные тексты, и заголовочные файлы, из которых формируется приложение. Учтите, что местонахождение файлов библиотек и заголовочных файлов KDE зависит от вашего дистрибутива. Пользователи SUSE должны приравнять

INCLUDEPATH
путь /opt/kde3/include и
QMAKE_LIBS_X11
путь /opt/kde3/lib.

$ qmake file.pro -о Makefile

Затем вы можете выполнить команду

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

Создание меню и панелей инструментов с помощью KDE

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

Обычно в библиотеках GUI элементы меню и панелей инструментов — отличающиеся элементы, каждый со своим собственным виджетом. Вы должны создавать отдельные объекты для каждого элемента и отслеживать изменения, например, делая недоступными определенные варианты, каждый отдельно.

У программистов KDE появилось лучшее решение. Вместо такого обособленного подхода в KDE определен виджет

KAction
для представления действия, которое может выполнить приложение. Это действие может открыть новый документ, сохранить файл или вывести окно справки.

Поделиться с друзьями: