|
|
(43 intermediate revisions by 14 users not shown) |
Line 1: |
Line 1: |
| {{Template:I18n/Language Navigation Bar (zh_CN)|Development/Tutorials/创建主窗口}}
| | This page was moved [https://develop.kde.org/docs/getting-started/main_window/ here] |
| {{TutorialBrowser|
| |
| | |
| series=初学者教程|
| |
| | |
| name=创建主窗口|
| |
| | |
| pre=[[Development/Tutorials/First_program (zh_CN)|教程1 - Hello World]]|
| |
| | |
| next=[[Development/Tutorials/Using_KActions|教程3 - 使用KActions]]|
| |
| | |
| reading={{class|KXmlGuiWindow}}
| |
| }}
| |
| | |
| == 摘要 ==
| |
| 本教程承接上一讲[[Development/Tutorials/First_program (zh_CN)|教程1 - Hello World]] ,进一步介绍{{class|KXmlGuiWindow}}类的使用。
| |
| | |
| 在上一讲中,程序只是显示了一个弹出框。在本讲中,我们要让我们的程序具备更加实际功能。
| |
| | |
| [[image:introtokdetutorial2.png|frame|center]]
| |
| | |
| == 使用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 <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", 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();
| |
| }
| |
| </code>
| |
| The only new lines here (compared to Tutorial 1) are 18 and 19. On line 18, we create our MainWindow object and then on line 19, 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>
| |
| | |
| === 编译运行 ===
| |
| To compile, link and run it, use:
| |
| cmake . && make && ./tutorial2
| |
| | |
| == 继续前进 ==
| |
| Now you can move on to [[Development/Tutorials/Using_KActions|using KActions]].
| |
| | |
| [[Category:C++]]
| |