James is me (Talk | contribs) (Линк на русскую страницу) |
|||
| (3 intermediate revisions by one user not shown) | |||
| Line 1: | Line 1: | ||
| − | + | ||
{{TutorialBrowser| | {{TutorialBrowser| | ||
| Line 25: | Line 25: | ||
===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 68: | Line 68: | ||
Чтобы завершить создание приложения, нужно написать пару строк в 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 и в строке 19 делаем его видимым. | Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 19 делаем его видимым. | ||
| Line 98: | Line 98: | ||
===CMakeLists.txt=== | ===CMakeLists.txt=== | ||
| − | < | + | <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}) | ||
| − | </ | + | </syntaxhighlight> |
===Компиляция=== | ===Компиляция=== | ||
| Tutorial Series | Beginner Tutorial |
| Previous | Урок 1 - Hello World |
| What's Next | Урок 3 - KAction и XmlGui |
| Further Reading | KXmlGuiWindow |
Contents |
Это продолжение урока по созданию первой программы, здесь представлена базовая информация по классу KXmlGuiWindow.
В предыдущем уроке рассказывалось как создать всплывающее диалоговое окно, теперь мы сделаем первые шаги по созданию полноценного функционального приложения.
Чтобы получить пользу от KXmlGuiWindow, следует создать производный от него класс. Наш код находится в двух файлах: mainwindow.cpp и mainwindow.h. Класс KXmlGuiWindow выбран базовым, так как с помощью него можно использовать XML, например, чтобы определить структуру меню нашего приложения.
#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, как, например, автоматическое скрытие курсора.
#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:
#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. Все изменения по сравнению с уроком 1 заключаются в добавлении файла mainwindow.cpp в список исходников и смене названия tutorial1 на tutorial2.
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.