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

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

Жанры

Основы программирования в 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
рейтинг книги
В объятиях страха, или За котом на край Вселенной

Дважды одаренный. Том VI

Тарс Элиан
6. Дважды одаренный
Фантастика:
аниме
альтернативная история
фэнтези
фантастика: прочее
5.25
рейтинг книги
Дважды одаренный. Том VI

Я был адъютантом Гитлера

фон Белов Николаус
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Я был адъютантом Гитлера

СССР

Идиатуллин Шамиль
Фантастика:
социально-философская фантастика
5.50
рейтинг книги
СССР

Операция "Рагнарек"

Сословская Ольга Игоревна
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Операция Рагнарек

Эзотерическое целительство

Бейли Алиса
4. Трактат о семи лучах
Религия и эзотерика:
эзотерика
5.00
рейтинг книги
Эзотерическое целительство

Анатомия террора

Давыдов Юрий Владимирович
Проза:
историческая проза
5.00
рейтинг книги
Анатомия террора

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.25
рейтинг книги
Аристократ из прошлого тысячелетия

Воронцов. Перезагрузка

Тарасов Ник
1. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.50
рейтинг книги
Воронцов. Перезагрузка

Солнечное затмение

Попов Андрей Викторович
Фантастика:
боевая фантастика
4.00
рейтинг книги
Солнечное затмение

Второгодка. Книга 3. Ученье свет

Ромов Дмитрий
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет

Последний герой

Грэйдо Эллениэль и Эстель
2. Последний герой
Фантастика:
фэнтези
юмористическое фэнтези
6.60
рейтинг книги
Последний герой

CCTV. Библия видеонаблюдения. Цифровые и сетевые технологии

Дамьяновски Владо
Научно-образовательная:
технические науки
5.00
рейтинг книги
CCTV. Библия видеонаблюдения. Цифровые и сетевые технологии

Гражданский кодекс Российской Федерации. Части первая, вторая, третья и четвертая. Текст с изменения

коллектив авторов 1
Справочная литература:
путеводители
5.00
рейтинг книги
Гражданский кодекс Российской Федерации. Части первая, вторая, третья и четвертая. Текст с изменения