|
|
(86 intermediate revisions by 23 users not shown) |
Line 1: |
Line 1: |
| [[image:introtokdetutorial2.png|frame|center]] | | This page was moved [https://develop.kde.org/docs/getting-started/main_window/ here] |
| ==Abstract==
| |
| This tutorial carries on from [[Development/Tutorials/Programming_Tutorial_KDE_4/First_program|First Program Tutorial]] and will introduce the {{class|KMainWindow}} class.
| |
| | |
| In the previous tutorial, the program caused a dialog box to pop up but were going to take steps towards a functioning application.
| |
| | |
| In order to have a useful KMainWindow, we must sub class it. So we create two files, a <tt>MainWindow.cpp</tt> and a <tt>MainWindow.h</tt> which will contain our code.
| |
| | |
| ==Prerequisites==
| |
| * [[Development/Tutorials/Programming_Tutorial_KDE_4/First_program|Hello World Tutorial]]
| |
| | |
| ==MainWindow Class==
| |
| ===MainWindow.h===
| |
| <code cppqt n>
| |
| #ifndef MAINWINDOW_H
| |
| #define MAINWINDOW_H
| |
| | |
| #include <KMainWindow>
| |
| #include <KTextEdit>
| |
| | |
| class MainWindow : public KMainWindow
| |
| {
| |
| public:
| |
| MainWindow(QWidget *parent=0);
| |
|
| |
| private:
| |
| KTextEdit* textArea;
| |
| };
| |
| | |
| #endif
| |
| </code>
| |
| First we Subclass KMainWindow on line 7 with with <tt>class MainWindow : public KMainWindow</tt>.
| |
| | |
| The we declare the constructor with <tt>MainWindow(QWidget *parent=0);</tt>.
| |
| | |
| And finally we declare a ponter 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 n>
| |
| #include "mainwindow.h"
| |
| | |
| MainWindow::MainWindow(QWidget *parent) : KMainWindow(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 KMainWindow what should appear in the central section of the window.
| |
| | |
| Finally, KMainWindow::setupGUI() is called which does a lot of behind the scene's 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 n>
| |
| #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 n>
| |
| 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>
| |
| ==Moving On==
| |
| Now you can move on to [[Development/Tutorials/Programming_Tutorial_KDE_4/Using_KActions|using KActions]].
| |