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

From KDE TechBase
m (KMainWindow → KXmlGuiWindow)
No edit summary
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KXmlGuiWindow}}
 
{{TutorialBrowser|
{{TutorialBrowser|


Line 6: Line 6:
name=Использование KXmlGuiWindow|
name=Использование KXmlGuiWindow|


pre=[[Development/Tutorials/First_program|Урок 1 - Hello World]]|
pre=[[Development/Tutorials/First_program_(ru)|Урок 1 - Hello World]]|


next=[[Development/Tutorials/Using_KActions|Урок 3 - KActions and XmlGui]]|  
next=[[Development/Tutorials/Using_KActions_(ru)|Урок 3 - KAction и XmlGui]]|  


reading={{class|KXmlGuiWindow}}
reading={{class|KXmlGuiWindow}}
Line 22: Line 22:
==Использование KXmlGuiWindow==
==Использование KXmlGuiWindow==


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


===mainwindow.h===
===mainwindow.h===
<code cppqt>
<syntaxhighlight lang="cpp-qt" line>
#ifndef MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#define MAINWINDOW_H
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 48: Line 48:


===mainwindow.cpp===
===mainwindow.cpp===
<code cppqt>
<syntaxhighlight lang="cpp-qt" line>
#include "mainwindow.h"
#include "mainwindow.h"


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


Line 66: Line 66:


==Создание main.cpp==
==Создание main.cpp==
Чтобы завершить создание приложение, нужно написать пару строк в main.cpp:
Чтобы завершить создание приложения, нужно написать пару строк в main.cpp:
===main.cpp===
===main.cpp===
<code cppqt>
<syntaxhighlight lang="cpp-qt" line>
#include <KApplication>
#include <KApplication>
#include <KAboutData>
#include <KAboutData>
Line 91: Line 91:
   return app.exec();
   return app.exec();
}
}
</code>
</syntaxhighlight>
Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 17 делаем его видимым.  
Новыми (по сравнению с Уроком 1) являются только строки 18 и 19. В строке 18 мы создаём объект MainWindow и в строке 19 делаем его видимым.
 


==CMake==
==CMake==
Line 99: Line 98:


===CMakeLists.txt===
===CMakeLists.txt===
<code ini>
<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})
</code>
</syntaxhighlight>


===Компиляция===
===Компиляция===
Чтобы скомпилировать, слинковать и запустить приложение, выполните:
Скомпилировать, скомпоновать и запустить приложение:
  cmake . && make && ./tutorial2
  cmake . && make && ./tutorial2


==Продолжим изучение==
==Продолжим изучение==
Теперь можно перейти к статье о [[Development/Tutorials/Using_KActions|KActions]].
Теперь можно перейти к статье о [[Development/Tutorials/Using_KActions_(ru)|KActions]].


[[Category:C++]]
[[Category:C++]]

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.