Development/Tutorials/Using KXmlGuiWindow (ru)

Jump to: navigation, search


Contents

Development/Tutorials/Using_KXmlGuiWindow

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

Введение

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

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

Introtokdetutorial2.png

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

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

mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <KXmlGuiWindow>
  5. #include <KTextEdit>
  6.  
  7. class MainWindow : public KXmlGuiWindow
  8. {
  9.   public:
  10.     MainWindow(QWidget *parent=0);
  11.  
  12.   private:
  13.     KTextEdit* textArea;
  14. };
  15.  
  16. #endif
  17. </code>
  18. Сначала в строке 7 мы объявляем производный от KXmlGuiWindow класс: <tt>class MainWindow : public KXmlGuiWindow</tt>, а затем - конструктор <tt>MainWindow(QWidget *parent=0);</tt>.
  19.  
  20. И наконец, объявляем указатель на объект, который станет главной частью нашей программы. {{class|KTextEdit}} является базовым редактором текста в формате richtext, поддерживающем некоторые вкусности KDE, как, например, автоматическое скрытие курсора.
  21.  
  22. ===mainwindow.cpp===
  23. <syntaxhighlight lang="cpp-qt" line>
  24. #include "mainwindow.h"
  25.  
  26. MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
  27. {
  28.   textArea = new KTextEdit;
  29.   setCentralWidget(textArea);
  30.   setupGUI();
  31. }
  32. </code>
  33. Сначала, конечно же, в строке 1 мы включаем заголовочный файл, содержащий объявление класса.
  34.  
  35. В строке 5 создаётся объект нашего текстового редактора. Затем в строке 6 мы используем встроенную функцию setCentralWidget(), указывающую KXmlGuiWindow, что должно находиться в центральной секции нашего окна.
  36.  
  37. Наконец, вызывается функция KXmlGuiWindow::setupGUI(), фоново выполняющая много различных действий по инициализации GUI и создающая панель меню по умолчанию (Settings, Help).
  38.  
  39.  
  40. ==Создание main.cpp==
  41. Чтобы завершить создание приложения, нужно написать пару строк в main.cpp:
  42. ===main.cpp===
  43. <syntaxhighlight lang="cpp-qt" line>
  44. #include <KApplication>
  45. #include <KAboutData>
  46. #include <KCmdLineArgs>
  47.  
  48. #include "mainwindow.h"
  49.  
  50. int main (int argc, char *argv[])
  51. {
  52.   KAboutData aboutData( "tutorial2", 0,
  53.       ki18n("Tutorial 2"), "1.0",
  54.       ki18n("A simple text area"),
  55.       KAboutData::License_GPL,
  56.       ki18n("Copyright (c) 2007 Developer") );
  57.   KCmdLineArgs::init( argc, argv, &aboutData );
  58.  
  59.   KApplication app;
  60.  
  61.   MainWindow* window = new MainWindow();
  62.   window->show();
  63.  
  64.   return app.exec();
  65. }
  66. </code>
  67. Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 19 делаем его видимым.
  68.  
  69. ==CMake==
  70. Наилучший способ собрать наше приложение - использовать CMake. Все изменения по сравнению с уроком 1 заключаются в добавлении файла <tt>mainwindow.cpp</tt> в список исходников и смене названия <tt>tutorial1</tt> на <tt>tutorial2</tt>.
  71.  
  72. ===CMakeLists.txt===
  73. <syntaxhighlight lang="ini">
  74. project (tutorial2)
  75.  
  76. find_package(KDE4 REQUIRED)
  77. include_directories( ${KDE4_INCLUDES} )
  78.  
  79. set(tutorial2_SRCS 
  80. 	main.cpp
  81. 	mainwindow.cpp
  82. )
  83.  
  84. kde4_add_executable(tutorial2 ${tutorial2_SRCS})
  85. target_link_libraries( tutorial2 ${KDE4_KDEUI_LIBS})
  86. </code>
  87.  
  88. ===Компиляция===
  89. Скомпилировать, скомпоновать и запустить приложение:
  90.  cmake . && make && ./tutorial2
  91.  
  92. ==Продолжим изучение==
  93. Теперь можно перейти к статье о [[Development/Tutorials/Using_KActions_(ru)|KActions]].
  94.  
  95. [[Category:C++]]

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal