|
|
(57 intermediate revisions by 17 users not shown) |
Line 1: |
Line 1: |
| {{TutorialBrowser|
| | This page was moved [https://develop.kde.org/docs/getting-started/main_window/ here] |
| | |
| series=Beginner Tutorial|
| |
| | |
| name=How To Use KMainWindow|
| |
| | |
| pre=[[Development/Tutorials/Programming_Tutorial_KDE_4/First_program|Tutorial 1 - Hello World]]|
| |
| | |
| next=[[Development/Tutorials/Programming_Tutorial_KDE_4/Using_KActions|Tutorial 3 - KActions and XmlGui]]|
| |
| | |
| reading={{class|KMainWindow}}
| |
| }}
| |
| | |
| ==Abstract==
| |
| This tutorial carries on from [[Development/Tutorials/Programming_Tutorial_KDE_4/First_program|First Program Tutorial]] and will introduce the {{class|KXmlGuiWindow}} class. | |
| | |
| In the previous tutorial, the program caused a dialog box to pop up but we're going to take steps towards a functioning application.
| |
| | |
| [[image:introtokdetutorial2.png|frame|center]]
| |
| | |
| ==Using KXmlGuiWindow==
| |
| | |
| In order to have a useful KXmlGuiWindow, we must subclass it. So we create two files, a <tt>mainwindow.cpp</tt> and a <tt>mainwindow.h</tt> which will contain our code. Our class inherits from KXmlGuiWindow because it uses XML e.g. to define the application's menu structure.
| |
| | |
| ===mainwindow.h===
| |
| <code cppqt>
| |
| #ifndef MAINWINDOW_H
| |
| #define MAINWINDOW_H
| |
| | |
| #include <KXmlGuiWindow>
| |
| #include <KTextEdit>
| |
| | |
| class MainWindow : public KXmlGuiWindow
| |
| {
| |
| public:
| |
| MainWindow(QWidget *parent=0);
| |
|
| |
| private:
| |
| KTextEdit* textArea;
| |
| };
| |
| | |
| #endif
| |
| </code>
| |
| First we Subclass KXmlGuiWindow on line 7 with with <tt>class MainWindow : public KXmlGuiWindow</tt>.
| |
| | |
| Then we declare the constructor with <tt>MainWindow(QWidget *parent=0);</tt>.
| |
| | |
| And finally we declare a pointer to the object that will make up the bulk of our program. {{class|KTextEdit}} is a generic richtext editor with some KDE niceties like cursor auto-hiding.
| |
| | |
| ===mainwindow.cpp===
| |
| <code cppqt>
| |
| #include "mainwindow.h"
| |
| | |
| MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
| |
| {
| |
| textArea = new KTextEdit;
| |
| setCentralWidget(textArea);
| |
| setupGUI();
| |
| }
| |
| </code>
| |
| First, of course, on line 1 we have to include the header file containing the class declaration.
| |
| | |
| On line 5, we initialise our text editor with an object. Then on line 6 we use the built-in setCentralWidget() function which tells the KXmlGuiWindow what should appear in the central section of the window.
| |
| | |
| Finally, KXmlGuiWindow::setupGUI() is called which does a lot of behind-the-scenes stuff and creates the default menu bars (Settings, Help).
| |
| | |
| ==Back to main.cpp==
| |
| In order to actually run this window, we need to add a few lines in main.cpp:
| |
| ===main.cpp===
| |
| <code cppqt>
| |
| #include <KApplication>
| |
| #include <KAboutData>
| |
| #include <KCmdLineArgs>
| |
| | |
| #include "mainwindow.h"
| |
| | |
| int main (int argc, char *argv[])
| |
| {
| |
| KAboutData aboutData( "tutorial2",
| |
| "Tutorial2", "1.0", "A simple text area",
| |
| KAboutData::License_GPL, "(c) 2006" );
| |
| KCmdLineArgs::init( argc, argv, &aboutData );
| |
|
| |
| KApplication app;
| |
|
| |
| MainWindow* window = new MainWindow();
| |
| window->show();
| |
| | |
| return app.exec();
| |
| }
| |
| </code>
| |
| The only new lines here (compared to Tutorial 1) are 16 and 17. On line 16, we create our MainWindow object and then on line 17, we display it.
| |
| | |
| ==CMake==
| |
| The best way to build the program is to use CMake. All that's changed since tutorial 1 is that <tt>mainwindow.cpp</tt> has been added to the sources list and any <tt>tutorial1</tt> has become <tt>tutorial2</tt>.
| |
| ===CMakeLists.txt===
| |
| <code ini>
| |
| 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})
| |
| </code>
| |
| | |
| ===Compile it===
| |
| To compile, link and run it, use:
| |
| cmake . && make && ./tutorial2
| |
| | |
| ==Moving On==
| |
| Now you can move on to [[Development/Tutorials/Programming_Tutorial_KDE_4/Using_KActions|using KActions]].
| |
| | |
| [[Category:C++]]
| |