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

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

Жанры

Основы программирования в Linux
Шрифт:
Упражнение 17.8. Приложение в KDE с меню и панелями инструментов

В приведенном далее примере вы опробуете объекты

KAction
в приложении среды KDE.

1. Начните с заголовочного файла KDEMenu.h.

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

#include <kde/kmainwindow.h>

class KDEMenu : public KMainWindow {

 Q_OBJECT

public:

 KDEMenu(const char * name = 0);

private slots:

 void newFile;

 void aboutApp;

};

2. Файл KDEMenu.cpp начните с директив

#include
для виджетов, которые будете применять:

#include "KDEMenu.h"

#include <kde/kapp.h>

#include <kde/kaction.h>

#include <kde/kstdaccel.h>

#include <kde/kmenubar.h>

#include <kde/kaboutdialog.h>

3. В конструкторах, создающих три виджета

KAction
,
new_file
определяется вручную, a
quit_action
и
help_action
используют стандартные определения
KAction
:

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

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

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

this, "newaction");

 KAction *quit_action = KStdAction::quit(KApplication::kApplication,

SLOT(quit), actionCollection);

 KAction *help_action = KStdAction::aboutApp(this, SLOT(aboutApp),

actionCollection);

4. Создайте два меню верхнего уровня и включите их в строку меню

KApplication
:

QPopupMenu *file_menu = new QPopupMenu;

QPopupMenu *help_menu = new QPopupMenu;

menuBar->insertItem("&File", file_menu);

menuBar->insertItem("&Help", help_menu);

5. Теперь вставьте действия в меню и панель инструментов, добавив разделительную линию между

new_file
и
quit_action
:

 new_file->plug(file_menu);

 file_menu->insertSeparator;

 quit_action->plug(file_menu);

 help_action->plug(help_menu);

 new_file->plug(toolBar);

 quit_action->plug(toolBar);

}

6. В заключение несколько определений слотов:

aboutApp
создает диалоговое окно
KAbout
для отображения сведений о программе. Учтите, что слот
quit
определен как часть
KApplication
:

void KDEMenu::newFile {

 // Создание нового файла

}

void KDEMenu::aboutApp {

 KAboutDialog *about = new KAboutDialog(this, "dialog");

about->setAuthor(QString("A. N. Author"),

QString("an@email.net"), QString("http://url.com"),

QString("work"));

 about->setVersion("1.0");

 about->show;

}

int main(int argc, char **argv) {

 KApplication app(argc, argv, "cdapp");

 KDEMenu* window = new KDEMenu("kdemenu");

 app.setMainWidget(window);

 window->show;

 return app.exec;

}
 

7. Далее вам нужен файл menu.pro для утилиты

qmake
:

TARGET = kdemenu

MOC_DIR = moc

OBJECTS_DIR = obj

INCLUDEPATH = /usr/include/kde

QMAKE_LIBDIR_X11 += -L$KDEDIR/lib

QMAKE_LIBS_X11 += -lkdeui -lkdecore

SOURCES = KDEMenu.cpp

HEADERS = KDEMenu.h

8. Теперь запустите

qmake
для создания make-файла, откомпилируйте и выполните программу:

$ qmake menu.pro -о Makefile

$ make

$ ./kdemenu

Как это работает

Несмотря на то, что этот пример получился чуть длиннее других, программный код довольно краток, если учесть всю выполняемую им работу по созданию строки меню и самих меню. Лучшее качество виджетов

KAction
— возможность использования каждого из них в разных частях программы, таких как панель инструментов и меню в строке меню, все упомянутые возможности показаны в данном примере.

Построение приложений KDE требует больше работы, чем создание большинства программ, по крайней мере, на первый взгляд. В действительности файл menu.pro и команда

qmake
скрывают большой набор параметров, которые в противном случае вам пришлось бы вставлять вручную в ваш make-файл.

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

Лев Толстой

Труайя Анри
Проза:
историческая проза
5.00
рейтинг книги
Лев Толстой

Возвращение Томаса. Башня-2 (сборник)

Никитин Юрий Александрович
Фантастика:
фэнтези
7.00
рейтинг книги
Возвращение Томаса. Башня-2 (сборник)

На горах

Мельников-Печерский Павел Иванович
Проза:
классическая проза
8.87
рейтинг книги
На горах

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Криптограммы Востока (сборник)

Рерих Елена Ивановна
Рерихи. Избранное
Религия и эзотерика:
эзотерика
религия
6.25
рейтинг книги
Криптограммы Востока (сборник)

Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Коллектив авторов
Warhammer Fantasy Battles
Фантастика:
фэнтези
5.00
рейтинг книги
Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Две могилы

Престон Дуглас
12. Пендергаст
Детективы:
триллеры
прочие детективы
8.90
рейтинг книги
Две могилы

Орленев

Мацкин Александр Петрович
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Орленев

Экспансия – I

Семенов Юлиан Семенович
10. Штирлиц
Детективы:
политические детективы
6.33
рейтинг книги
Экспансия – I

Александр III и его время

Толмачев Евгений Петрович
Научно-образовательная:
история
культурология
5.00
рейтинг книги
Александр III и его время

Параллельные миры

Каку Митио
Научно-образовательная:
прочая научная литература
8.11
рейтинг книги
Параллельные миры

12 великих комедий

Шекспир Уильям
Вожди Советского Союза
Проза:
классическая проза
6.25
рейтинг книги
12 великих комедий

Земля в цвету

Сафонов Вадим Андреевич
Научно-образовательная:
история
биология
ботаника
5.00
рейтинг книги
Земля в цвету

Ледовый апокалипсис

Ладлэм Роберт
7. Прикрытие-Один
Детективы:
триллеры
5.00
рейтинг книги
Ледовый апокалипсис