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

    From KDE TechBase
    No edit summary
    No edit summary
    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)|



    Revision as of 06:30, 3 January 2010

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

    摘要

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

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

    KXmlGuiWindow

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

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

    mainwindow.h

    1. ifndef MAINWINDOW_H
    2. define MAINWINDOW_H
    1. include <KXmlGuiWindow>
    2. include <KTextEdit>

    class MainWindow : public KXmlGuiWindow {

     public:
       MainWindow(QWidget *parent=0);
    
     private:
       KTextEdit* textArea;
    

    };

    1. endif

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

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

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

    mainwindow.cpp

    1. include "mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent) {

     textArea = new KTextEdit();
     setCentralWidget(textArea);
     setupGUI();
    

    } 首先,很自然的,我們在第一行含入(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>
    1. 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相比,唯一新增的就是第6、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})

    編譯

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

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

    繼續前進

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