Development/Tutorials/Using KXmlGuiWindow (ru)

    From KDE TechBase


    Development/Tutorials/Using_KXmlGuiWindow

    Использование KXmlGuiWindow
    Tutorial Series   Beginner Tutorial
    Previous   Урок 1 - Hello World
    What's Next   Урок 3 - KActions and XmlGui
    Further Reading   KXmlGuiWindow

    Введение

    Это продолжение урока по созданию первой программы, здесь представлена базовая информация по классу KXmlGuiWindow.

    В предыдущем уроке рассказывалось как создать всплывающее диалоговое окно, теперь мы сделаем первые шаги по созданию полноценного функционального приложения.

    Использование KXmlGuiWindow

    Чтобы получить пользу on KXmlGuiWindow, следует создать производный от него класс. Наш код находится в двух файлах: mainwindow.cpp и mainwindow.h. Класс KXmlGuiWindow выбран базовым, так как с помощью него можно использовать XML, например, чтобы определить структуру меню нашего приложения.

    mainwindow.h

    1. ifndef MAINWINDOW_H
    2. define MAINWINDOW_H
    1. include <KXmlGuiWindow>
    2. include <KTextEdit>

    class MainWindow : public KXmlGuiWindow {

     public:
       MainWindow(QWidget *parent=0);
    
     private:
       KTextEdit* textArea;
    

    };

    1. endif

    Сначала в строке 7 мы объявляем производный от KXmlGuiWindow класс: class MainWindow : public KXmlGuiWindow, а затем - конструктор MainWindow(QWidget *parent=0);.

    И наконец, объявляем указатель на объект, который станет главной частью нашей программы. KTextEdit является базовым редактором текста в формате richtext, поддерживающем некоторые вкусности KDE, как, например, автоматическое скрытие курсора.

    mainwindow.cpp

    1. include "mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent) {

     textArea = new KTextEdit;
     setCentralWidget(textArea);
     setupGUI();
    

    } Сначала, конечно же, в строке 1 мы включаем заголовочный файл, содержащий объявление класса.

    В строке 5 создаётся объект нашего текстового редактора. Затем в строке 6 мы используем встроенную функцию setCentralWidget(), указывающую KXmlGuiWindow, что должно находиться в центральной секции нашего окна.

    Наконец, вызывается функция KXmlGuiWindow::setupGUI(), фоново выполняющая много различных действий по инициализации GUI и создающая панель меню по умолчанию (Settings, Help).


    Создание main.cpp

    Чтобы завершить создание приложение, нужно написать пару строк в main.cpp:

    main.cpp

    1. include <KApplication>
    2. include <KAboutData>
    3. include <KCmdLineArgs>
    1. include "mainwindow.h"

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

     KAboutData aboutData( "tutorial2", 0,
         ki18n("Tutorial 2"), "1.0",
         ki18n("A simple text area"),
         KAboutData::License_GPL,
         ki18n("Copyright (c) 2007 Developer") );
     KCmdLineArgs::init( argc, argv, &aboutData );
     
     KApplication app;
    
     MainWindow* window = new MainWindow();
     window->show();
    
     return app.exec();
    

    } Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 17 делаем его видимым.


    CMake

    Наилучший способ собрать наше приложение - использовать CMake. Все изменения по сравнению с уроком 1 заключаются в добавлении файла mainwindow.cpp в список исходников и смене названия tutorial1 на tutorial2.

    CMakeLists.txt

    project (tutorial2)

    find_package(KDE4 REQUIRED) include_directories( ${KDE4_INCLUDES} )

    set(tutorial2_SRCS main.cpp mainwindow.cpp )

    kde4_add_executable(tutorial2 ${tutorial2_SRCS}) target_link_libraries( tutorial2 ${KDE4_KDEUI_LIBS})

    Компиляция

    Чтобы скомпилировать, слинковать и запустить приложение, выполните:

    cmake . && make && ./tutorial2
    

    Продолжим изучение

    Теперь можно перейти к статье о KActions.