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

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

Жанры

Основы программирования в 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-файл.

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

Вернувшийся: Корпорация. Том III

Vector
3. Вернувшийся
Фантастика:
космическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Корпорация. Том III

Петля, Кадетский корпус. Книга третья

Алексеев Евгений Артемович
3. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский корпус. Книга третья

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Паладин из прошлого тысячелетия

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

Я Гордый Часть 3

Машуков Тимур
3. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый Часть 3

Я до сих пор не царь. Книга XXVII

Дрейк Сириус
27. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор не царь. Книга XXVII

Газлайтер. Том 25

Володин Григорий Григорьевич
25. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 25

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

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

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

An ordinary sex life

Астердис
Любовные романы:
современные любовные романы
love action
5.00
рейтинг книги
An ordinary sex life

Зодчий. Книга I

Погуляй Юрий Александрович
1. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга I

Пустоши

Сай Ярослав
1. Медорфенов
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Пустоши

Лейтенант. Часть 2. Назад в СССР

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

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный