Development/Tutorials/Using KXmlGuiWindow (ru): Difference between revisions

    From KDE TechBase
    m (Text replace - "<code cppqt n>" to "<syntaxhighlight lang="cpp-qt" line>")
    No edit summary
     
    (2 intermediate revisions by one other user not shown)
    Line 1: Line 1:
    {{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KXmlGuiWindow}}
     
    {{TutorialBrowser|
    {{TutorialBrowser|


    Line 42: Line 42:


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


    Line 57: Line 57:
       setupGUI();
       setupGUI();
    }
    }
    </code>
    </syntaxhighlight>
    Сначала, конечно же, в строке 1 мы включаем заголовочный файл, содержащий объявление класса.
    Сначала, конечно же, в строке 1 мы включаем заголовочный файл, содержащий объявление класса.


    Line 91: Line 91:
       return app.exec();
       return app.exec();
    }
    }
    </code>
    </syntaxhighlight>
    Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 19 делаем его видимым.
    Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 19 делаем его видимым.


    Line 98: Line 98:


    ===CMakeLists.txt===
    ===CMakeLists.txt===
    <code ini>
    <syntaxhighlight lang="ini">
    project (tutorial2)
    project (tutorial2)


    Line 111: Line 111:
    kde4_add_executable(tutorial2 ${tutorial2_SRCS})
    kde4_add_executable(tutorial2 ${tutorial2_SRCS})
    target_link_libraries( tutorial2 ${KDE4_KDEUI_LIBS})
    target_link_libraries( tutorial2 ${KDE4_KDEUI_LIBS})
    </code>
    </syntaxhighlight>


    ===Компиляция===
    ===Компиляция===

    Latest revision as of 09:29, 14 July 2012

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

    Введение

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

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

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

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

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <KXmlGuiWindow>
    #include <KTextEdit>
    
    class MainWindow : public KXmlGuiWindow
    {
      public:
        MainWindow(QWidget *parent=0);
    		
      private:
        KTextEdit* textArea;
    };
    
    #endif
    

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

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

    mainwindow.cpp

    #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

    #include <KApplication>
    #include <KAboutData>
    #include <KCmdLineArgs>
    
    #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 и в строке 19 делаем его видимым.

    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.