Читать интересную книгу Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 310 311 312 313 314 315 316 317 318 ... 324

HEADERS = window.h

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

$ <b>qmake file.pro -о Makefile</b>

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

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

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

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

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

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

KAction *new_file = new KAction(&quot;New&quot;, &quot;filenew&quot;,

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

 SLOT(newFile()), this, &quot;newaction&quot;);

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

new_file-&gt;plug(a_menu);

new_file-&gt;plug(a_toolbar);

Таким образом, вы создали пункт меню New и кнопку панели инструментов, которые вызывают newFile при щелчке кнопкой мыши.

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

new_file-&gt;setEnabled(FALSE);

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

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

<b>KAction(const QString&amp; text, const KShortcut&amp; cut,</b>

<b> const QObject* receiver, const char* slot,</b>

<b> QObject *parent, const char* name = 0);</b>

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

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

<b>KAction* openNew(const QObject* recvr, const char *slot,</b>

<b> KActionCollection* parent, const char* name = 0)ж</b>

<b>KAction* save ...</b>

<b>KAction* saveAs ...</b>

<b>KAction* revert ...</b>

<b>KAction* close ...</b>

<b>KAction* print ...</b>

И т.д.

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

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

 actionCollection(), &quot;saveas&quot;);

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

Упражнение 17.8. Приложение в KDE с меню и панелями инструментов

В приведенном далее примере вы опробуете объекты KAction в приложении среды KDE.

1. Начните с заголовочного файла KDEMenu.h. KDEMenu — это подкласс KMainWindow, являющегося подклассом класса QMainWindow. KMainWindow управляет сеансом в среде KDE и обладает встроенными панелью инструментов и строкой состояния.

#include &lt;kde/kmainwindow.h&gt;

class KDEMenu : public KMainWindow {

 Q_OBJECT

public:

 KDEMenu(const char * name = 0);

private slots:

 void newFile();

 void aboutApp();

};

2. Файл KDEMenu.cpp начните с директив #include для виджетов, которые будете применять:

#include &quot;KDEMenu.h&quot;

#include &lt;kde/kapp.h&gt;

#include &lt;kde/kaction.h&gt;

#include &lt;kde/kstdaccel.h&gt;

#include &lt;kde/kmenubar.h&gt;

#include &lt;kde/kaboutdialog.h&gt;

3. В конструкторах, создающих три виджета KAction, new_file определяется вручную, a quit_action и help_action используют стандартные определения KAction:

KDEMenu::KDEMenu(const char *name = 0) : KMainWindow (0L, name) {

 KAction *new_file = new KAction(&quot;New&quot;, &quot;filenew&quot;,

1 ... 310 311 312 313 314 315 316 317 318 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

Оставить комментарий