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

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

Жанры

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

Созданное диалоговое окно показано на рис. 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
для представления действия, которое может выполнить приложение. Это действие может открыть новый документ, сохранить файл или вывести окно справки.

KAction
присваивается текст, клавиатурный акселератор, пиктограмма и слот, который вызывается при активизации действия:

KAction *new_file = new KAction("New", "filenew",

 KstdAccel::shortcut(KstdAccel::New), this,

 SLOT(newFile), this, "newaction");

Затем

KAction
может быть вставлено в меню и панель инструментов без дополнительного описания:

new_file->plug(a_menu);

new_file->plug(a_toolbar);

Таким образом, вы создали пункт меню New и кнопку панели инструментов, которые вызывают

newFile
при щелчке кнопкой мыши.

Теперь если вам нужно отменить

KAction
— скажем, вы не хотите, чтобы пользователь мог создать новый файл, — вызов централизован:

new_file->setEnabled(FALSE);

Это все, что касается меню и панелей инструментов в среде KDE — на самом деле очень легко и просто. Далее приведен конструктор виджета

KAction
:

#include <kde/kaction.h>

KAction(const QString& text, const KShortcut& cut,

 const QObject* receiver, const char* slot,

 QObject *parent, const char* name = 0);

KDE предоставляет стандартные объекты

KAction
для унификации текста, клавиатурных акселераторов и пиктограмм в разных приложениях KDE:

#include <kde/kaction.h>

KAction* openNew(const QObject* recvr, const char *slot,

 KActionCollection* parent, const char* name = 0)ж

KAction* save ...

KAction* saveAs ...

KAction* revert ...

KAction* close ...

KAction* print ...

И т.д.

Любое стандартное действие принимает одни и те же параметры; слот-приемник и функцию,

KActionCollection
и имя
KAction
. Объект
KActionCollection
управляет в окне объектами
KAction
, и вы можете получить текущий объект с помощью метода
actionCollection
окна
KMainWindow
:

KAction *saveas = KStdAction::saveAs(this, SLOT(saveAs) ,

 actionCollection, "saveas");

Выполните упражнение 17.8.

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

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Сердце Дракона. Том 10

Клеванский Кирилл Сергеевич
10. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.14
рейтинг книги
Сердце Дракона. Том 10

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Низший

Михайлов Дем Алексеевич
1. Низший!
Фантастика:
боевая фантастика
7.90
рейтинг книги
Низший

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Темный Лекарь

Токсик Саша
1. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь

Возвращение Безумного Бога 5

Тесленок Кирилл Геннадьевич
5. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 5

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Его темная целительница

Крааш Кира
2. Любовь среди туманов
Фантастика:
фэнтези
5.75
рейтинг книги
Его темная целительница

Теневой Перевал

Осадчук Алексей Витальевич
8. Последняя жизнь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Теневой Перевал

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

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

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

По дороге пряностей

Распопов Дмитрий Викторович
2. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
5.50
рейтинг книги
По дороге пряностей