Development/Tutorials/Using KXmlGuiWindow (ru): Difference between revisions
Shaforostoff (talk | contribs) |
No edit summary |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{TutorialBrowser| | {{TutorialBrowser| | ||
Line 8: | Line 8: | ||
pre=[[Development/Tutorials/First_program_(ru)|Урок 1 - Hello World]]| | pre=[[Development/Tutorials/First_program_(ru)|Урок 1 - Hello World]]| | ||
next=[[Development/Tutorials/Using_KActions_(ru)|Урок 3 - | next=[[Development/Tutorials/Using_KActions_(ru)|Урок 3 - KAction и XmlGui]]| | ||
reading={{class|KXmlGuiWindow}} | reading={{class|KXmlGuiWindow}} | ||
Line 22: | Line 22: | ||
==Использование KXmlGuiWindow== | ==Использование KXmlGuiWindow== | ||
Чтобы получить пользу | Чтобы получить пользу от KXmlGuiWindow, следует создать производный от него класс. Наш код находится в двух файлах: <tt>mainwindow.cpp</tt> и <tt>mainwindow.h</tt>. Класс KXmlGuiWindow выбран базовым, так как с помощью него можно использовать XML, например, чтобы определить структуру меню нашего приложения. | ||
===mainwindow.h=== | ===mainwindow.h=== | ||
< | <syntaxhighlight lang="cpp-qt" line> | ||
#ifndef MAINWINDOW_H | #ifndef MAINWINDOW_H | ||
#define MAINWINDOW_H | #define MAINWINDOW_H | ||
Line 42: | Line 42: | ||
#endif | #endif | ||
</ | </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 48: | Line 48: | ||
===mainwindow.cpp=== | ===mainwindow.cpp=== | ||
< | <syntaxhighlight lang="cpp-qt" line> | ||
#include "mainwindow.h" | #include "mainwindow.h" | ||
Line 57: | Line 57: | ||
setupGUI(); | setupGUI(); | ||
} | } | ||
</ | </syntaxhighlight> | ||
Сначала, конечно же, в строке 1 мы включаем заголовочный файл, содержащий объявление класса. | Сначала, конечно же, в строке 1 мы включаем заголовочный файл, содержащий объявление класса. | ||
Line 66: | Line 66: | ||
==Создание main.cpp== | ==Создание main.cpp== | ||
Чтобы завершить создание | Чтобы завершить создание приложения, нужно написать пару строк в main.cpp: | ||
===main.cpp=== | ===main.cpp=== | ||
< | <syntaxhighlight lang="cpp-qt" line> | ||
#include <KApplication> | #include <KApplication> | ||
#include <KAboutData> | #include <KAboutData> | ||
Line 91: | Line 91: | ||
return app.exec(); | return app.exec(); | ||
} | } | ||
</ | </syntaxhighlight> | ||
Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке | Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 19 делаем его видимым. | ||
==CMake== | ==CMake== | ||
Line 99: | Line 98: | ||
===CMakeLists.txt=== | ===CMakeLists.txt=== | ||
< | <syntaxhighlight lang="ini"> | ||
project (tutorial2) | project (tutorial2) | ||
Line 112: | 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}) | ||
</ | </syntaxhighlight> | ||
===Компиляция=== | ===Компиляция=== | ||
Line 119: | Line 118: | ||
==Продолжим изучение== | ==Продолжим изучение== | ||
Теперь можно перейти к статье о [[Development/Tutorials/ | Теперь можно перейти к статье о [[Development/Tutorials/Using_KActions_(ru)|KActions]]. | ||
[[Category:C++]] | [[Category:C++]] |
Latest revision as of 09:29, 14 July 2012
Tutorial Series | Beginner Tutorial |
Previous | Урок 1 - Hello World |
What's Next | Урок 3 - KAction и XmlGui |
Further Reading | KXmlGuiWindow |
Введение
Это продолжение урока по созданию первой программы, здесь представлена базовая информация по классу KXmlGuiWindow.
В предыдущем уроке рассказывалось как создать всплывающее диалоговое окно, теперь мы сделаем первые шаги по созданию полноценного функционального приложения.
![](/images.techbase/b/b8/Introtokdetutorial2.png)
Использование 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.