Difference between revisions of "Archive:Development/Tutorials/Using KXmlGuiWindow (zh TW)"

 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KXmlGuiWindow}}
+
{{Template:I18n/Language Navigation Bar_(zh_TW)|Development/Tutorials/Using_KXmlGuiWindow}}
 
{{TutorialBrowser (zh TW)|
 
{{TutorialBrowser (zh TW)|
  
Line 8: Line 8:
 
pre=[[Development/Tutorials/First_program (zh TW)|教學1 - Hello World]]|
 
pre=[[Development/Tutorials/First_program (zh TW)|教學1 - Hello World]]|
  
next=[[Development/Tutorials/Using_KActions|教學3 - KActions 和 XMLGUI]]|  
+
next=[[Development/Tutorials/Using_KActions (zh TW)|教學3 - KActions 和 XMLGUI]]|  
  
 
reading={{class|KXmlGuiWindow}}
 
reading={{class|KXmlGuiWindow}}
Line 14: Line 14:
  
 
==摘要==
 
==摘要==
本教學承接上一講[[Development/Tutorials/First_program (zh TW)|第一個程式教學]],進一步介紹 {{class|KXmlGuiWindow}} 類別的使用。
+
本教學承接上一講[[Development/Tutorials/First_program (zh TW)|第一支程式教學]],進一步介紹 {{class|KXmlGuiWindow}} 類別的使用。
  
 
在上一講中,程式只是彈出了一個對話框。在本講中,我們要讓我們的程式具備更加實際功能。
 
在上一講中,程式只是彈出了一個對話框。在本講中,我們要讓我們的程式具備更加實際功能。
Line 22: Line 22:
 
==KXmlGuiWindow==
 
==KXmlGuiWindow==
  
{{class|KXmlGuiWindow}} 提供完整的主視窗檢視包含選單列、工具列、狀態列和中央的主區域。大多數KDE應用程式會衍生此類別,因為它提供了一個簡單的方法,透過XML檔案定義選單和工具列的排版(這種技術稱為XMLGUI)。雖然我們不會使用 XMLGUI 在''本''教學中,但將來我們會使用到它。
+
{{class|KXmlGuiWindow}} 提供完整的主視窗檢視包含選單列、工具列、狀態列和中央的主區域。大多數 KDE 應用程式會衍生此類別,因為它提供了一個簡單的方法,透過 XML 檔案定義選單和工具列的排版(這種技術稱為XMLGUI)。雖然我們不會使用 XMLGUI 在''本''教學中,但下一課我們會用到它。
  
為了使用 KXmlGuiWindow,我們必須對它子類別化。因此,我們創建兩個檔案, <tt>mainwindow.cpp</tt> 和 <tt>mainwindow.h</tt> 放置我們的程式碼。
+
為了使用 KXmlGuiWindow,我們必須對它子類別化。因此,我們建立兩個檔案, <tt>mainwindow.cpp</tt> 和 <tt>mainwindow.h</tt> 放置我們的程式碼。
  
 
===mainwindow.h===
 
===mainwindow.h===
<code cppqt n>
+
<syntaxhighlight lang="cpp-qt" line>
 
#ifndef MAINWINDOW_H
 
#ifndef MAINWINDOW_H
 
#define MAINWINDOW_H
 
#define MAINWINDOW_H
Line 44: Line 44:
  
 
#endif
 
#endif
</code>
+
</syntaxhighlight>
First we Subclass KXmlGuiWindow on line 7 with <tt>class MainWindow : public KXmlGuiWindow</tt>.
+
首先,我們在第7行宣告 KXmlGuiWindow 的子類別:<tt>class MainWindow : public KXmlGuiWindow</tt>
  
Then we declare the constructor with <tt>MainWindow(QWidget *parent=0);</tt>.
+
接下來我們宣告一個建構子 <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.
+
最後我們宣告了一個指標,它指向構成我們程式主體的物件。{{class|KTextEdit}} 是一個通用的文字編輯器,並具有很多 KDE 特有的優點,如游標自動隱藏等。
  
 
===mainwindow.cpp===
 
===mainwindow.cpp===
<code cppqt n>
+
<syntaxhighlight lang="cpp-qt" line>
 
#include "mainwindow.h"
 
#include "mainwindow.h"
  
Line 61: Line 61:
 
   setupGUI();
 
   setupGUI();
 
}
 
}
</code>
+
</syntaxhighlight>
First, of course, on line 1 we have to include the header file containing the class declaration.
+
首先,很自然的,我們在第一行含入(include)有類別宣告的標頭檔(header file)。
  
On line 5, we initialise our text editor with an object. Then on line 6 we use KXmlGuiWindow's built-in setCentralWidget() function which tells the KXmlGuiWindow what should appear in the central section of the window.
+
在第五行,我們初始化了文字編輯器物件。接下來在第6行,我們使用 KXmlGuiWindow 內建的 setCentralWidget() 函式,它告訴 KXmlGuiWindow 什麼東西應該顯示在視窗的中央。
  
Finally, KXmlGuiWindow::setupGUI() is called which does a lot of behind-the-scenes stuff and creates the default menu bars (Settings, Help).
+
最後,呼叫 KXmlGuiWindow::setupGUI(),它會替我們完成很多底層的工作,並建立一個預設的選單列(包含 Settings 和 Help)。
  
 
==回到 main.cpp==
 
==回到 main.cpp==
In order to actually run this window, we need to add a few lines in main.cpp:
+
為了能夠實際運行前面定義的視窗,我們還需要在 main.cpp 中增加幾行:
 
===main.cpp===
 
===main.cpp===
<code cppqt n>
+
<syntaxhighlight lang="cpp-qt" line>
 
#include <KApplication>
 
#include <KApplication>
 
#include <KAboutData>
 
#include <KAboutData>
Line 95: Line 95:
 
   return app.exec();
 
   return app.exec();
 
}
 
}
</code>
+
</syntaxhighlight>
The only new lines here (compared to Tutorial 1) are 5, 18 and 19. On line 18, we create our MainWindow object and then on line 19, we display it.
+
與教學1相比,唯一新增的就是第6、18和19行。在第18行,我們生成了一個 MainWindow 物件實例,然後在第19行顯示它。
  
 
==CMake==
 
==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>.
+
建構此程式的最好方法是使用 CMake。與教學1相比,改變包含增加 <tt>mainwindow.cpp</tt> 到原始碼列表中,以及 <tt>tutorial1</tt> 變成了 <tt>tutorial2</tt>
 
===CMakeLists.txt===
 
===CMakeLists.txt===
<code ini n>
+
<syntaxhighlight lang="make" line>
 
project (tutorial2)
 
project (tutorial2)
  
Line 114: Line 114:
 
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>
  
===Compile it===
+
===編譯===
To compile, link and run it, use:
+
使用下面的指令編譯、連結以及運行程式:
 
  mkdir build && cd build
 
  mkdir build && cd build
 
  cmake ..
 
  cmake ..
Line 124: Line 124:
  
 
==繼續前進==
 
==繼續前進==
現在你可以開始學習下一課:[[Development/Tutorials/Using_KActions|使用 KActions]]。
+
現在你可以開始學習下一課:[[Development/Tutorials/Using_KActions (zh TW)|使用 KActions]]。
  
 
[[Category:C++]]
 
[[Category:C++]]

Latest revision as of 13:25, 23 June 2013

Template:I18n/Language Navigation Bar (zh TW) Template:TutorialBrowser (zh TW)

摘要

本教學承接上一講第一支程式教學,進一步介紹 KXmlGuiWindow 類別的使用。

在上一講中,程式只是彈出了一個對話框。在本講中,我們要讓我們的程式具備更加實際功能。

Introtokdetutorial2.png

KXmlGuiWindow

KXmlGuiWindow 提供完整的主視窗檢視包含選單列、工具列、狀態列和中央的主區域。大多數 KDE 應用程式會衍生此類別,因為它提供了一個簡單的方法,透過 XML 檔案定義選單和工具列的排版(這種技術稱為XMLGUI)。雖然我們不會使用 XMLGUI 在教學中,但下一課我們會用到它。

為了使用 KXmlGuiWindow,我們必須對它子類別化。因此,我們建立兩個檔案, mainwindow.cppmainwindow.h 放置我們的程式碼。

mainwindow.h

 1 #ifndef MAINWINDOW_H
 2 #define MAINWINDOW_H
 3 
 4 #include <KXmlGuiWindow>
 5 #include <KTextEdit>
 6 
 7 class MainWindow : public KXmlGuiWindow
 8 {
 9   public:
10     MainWindow(QWidget *parent=0);
11 		
12   private:
13     KTextEdit* textArea;
14 };
15 
16 #endif

首先,我們在第7行宣告 KXmlGuiWindow 的子類別:class MainWindow : public KXmlGuiWindow

接下來我們宣告一個建構子 MainWindow(QWidget *parent=0);

最後我們宣告了一個指標,它指向構成我們程式主體的物件。KTextEdit 是一個通用的文字編輯器,並具有很多 KDE 特有的優點,如游標自動隱藏等。

mainwindow.cpp

1 #include "mainwindow.h"
2 
3 MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
4 {
5   textArea = new KTextEdit();
6   setCentralWidget(textArea);
7   setupGUI();
8 }

首先,很自然的,我們在第一行含入(include)有類別宣告的標頭檔(header file)。

在第五行,我們初始化了文字編輯器物件。接下來在第6行,我們使用 KXmlGuiWindow 內建的 setCentralWidget() 函式,它告訴 KXmlGuiWindow 什麼東西應該顯示在視窗的中央。

最後,呼叫 KXmlGuiWindow::setupGUI(),它會替我們完成很多底層的工作,並建立一個預設的選單列(包含 Settings 和 Help)。

回到 main.cpp

為了能夠實際運行前面定義的視窗,我們還需要在 main.cpp 中增加幾行:

main.cpp

 1 #include <KApplication>
 2 #include <KAboutData>
 3 #include <KCmdLineArgs>
 4 #include <KLocale>
 5 
 6 #include "mainwindow.h"
 7 
 8 int main (int argc, char *argv[])
 9 {
10   KAboutData aboutData( "tutorial2", 0,
11       ki18n("Tutorial 2"), "1.0",
12       ki18n("A simple text area"),
13       KAboutData::License_GPL,
14       ki18n("Copyright (c) 2007 Developer") );
15   KCmdLineArgs::init( argc, argv, &aboutData );
16   
17   KApplication app;
18  
19   MainWindow* window = new MainWindow();
20   window->show();
21 
22   return app.exec();
23 }

與教學1相比,唯一新增的就是第6、18和19行。在第18行,我們生成了一個 MainWindow 物件實例,然後在第19行顯示它。

CMake

建構此程式的最好方法是使用 CMake。與教學1相比,改變包含增加 mainwindow.cpp 到原始碼列表中,以及 tutorial1 變成了 tutorial2

CMakeLists.txt

 1 project (tutorial2)
 2 
 3 find_package(KDE4 REQUIRED)
 4 include_directories(${KDE4_INCLUDES})
 5 
 6 set(tutorial2_SRCS 
 7   main.cpp
 8   mainwindow.cpp
 9 )
10 
11 kde4_add_executable(tutorial2 ${tutorial2_SRCS})
12 target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS})

編譯

使用下面的指令編譯、連結以及運行程式:

mkdir build && cd build
cmake ..
make
./tutorial2

繼續前進

現在你可以開始學習下一課:使用 KActions


This page was last edited on 23 June 2013, at 13:25. Content is available under Creative Commons License SA 4.0 unless otherwise noted.