Development/Tutorials/Using KXmlGuiWindow (fa): Difference between revisions

    From KDE TechBase
    m (Text replace - "</code>" to "</syntaxhighlight>")
    m (Text replace - "<code ini n>" to "<syntaxhighlight lang="ini" line>")
    Line 110: Line 110:
    ===CMakeLists.txt===
    ===CMakeLists.txt===
    <div dir="ltr">
    <div dir="ltr">
    <code ini n>
    <syntaxhighlight lang="ini" line>
    project (tutorial2)
    project (tutorial2)



    Revision as of 21:04, 29 June 2011


    Development/Tutorials/Using_KXmlGuiWindow

    استفاده از KXmlGuiWindow
    سری آموزشی   آموزش مقدماتی
    پیش‌نیازها   آموزش ۱ - سلام دنیا
    پس از این   آموزش ۳ - KActions و XMLGUI
    مطالعه‌ی بیشتر   KXmlGuiWindow

    چکیده

    این آموزش کار را از برنامه‌ی آموزش اول پی می‌گیرد و کلاس KXmlGuiWindow را معرفی می‌کند.

    در آموزش پیشین، برنامه یک پنجره‌ی پیغام را به نمایش درآورد، اما ما می‌خواهیم به سوی ساختن یک برنامه‌ی کاربردی گام برداریم.

    KXmlGuiWindow

    KXmlGuiWindow یک پنجره‌ی اصلی کامل با نوارهای منو، ابزار و وضعیت ارائه می‌دهد. همچنین یک ناحیه‌ی اصلی مرکزی مناسب یک ابزارک (Widget) بزرگ در اختیار برنامه‌نویس می‌گذارد. بیشتر برنامه‌های کاربردی KDEبرای پنجره‌ی اصلی خود، کلاس‌هایی مشتق‌شده از این کلاس می‌سازند؛ چرا که تعریف نوار منو و نوار ابزار را به وسیله‌ی XML آسان می‌سازد (این تکنولوژی XMLGUI نام دارد). با این‌که در این بخش از آموزش از XMLGUI استفاده نمی‌کنیم، اما در بخش بعدی از آن بهره خواهیم برد.

    برای این‌که KXmlGuiWindow مفید واقع شود، باید زیرکلاسی از آن مشتق کنیم. بنابراین دو فایل mainwindow.cpp و mainwindow.h را می‌سازیم و کد کلاس MainWindow خود را در آن قرار می‌دهیم.

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <KXmlGuiWindow>
    #include <KTextEdit>
    
    class MainWindow : public KXmlGuiWindow
    {
      public:
        MainWindow(QWidget *parent=0);
    		
      private:
        KTextEdit* textArea;
    };
    
    #endif
    

    در سطر ۷، ابتدا با class MainWindow : public KXmlGuiWindow زیرکلاسی از KXmlGuiWindow به نام MainWindow تعریف می‌کنیم.

    سپس تابع سازنده را اعلان می‌کنیم: MainWindow(QWidget *parent=0);

    و در نهایت، اشاره‌گری به شیء اصلی برنامه‌ی خود تعریف می‌کنیم. KTextEdit یک ویرایش‌گر متن عمومی است که برخی ویژگی‌های KDE روی آن اعمال شده‌است (همانند پنهان‌سازی خودکار اشاره‌گر ماوس).

    mainwindow.cpp

    #include "mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
    {
      textArea = new KTextEdit();
      setCentralWidget(textArea);
      setupGUI();
    }
    

    قبل از هر چیز، در سطر اول باید فایل سرآمدی را که اعلان کلاس در آن آمده‌است، include کنیم.

    در سطر ۵، شیء ویرایش‌گر متن مقدار دهی می‌شود؛ شیء جدیدی از نوع KTextEdit. سپس در سطر ۶، از تابع setCentralWidget() از کلاس KXmlGuiWindow استفاده می‌کنیم که معین می‌کند چه چیزی باید در ناحیه‌ی مرکزی پنجره نمایان شود.

    در پایان، KXmlGuiWindow::setupGUI() فراخوانی می‌شود. این تابع در پس پرده کارهای بسیاری انجام می‌دهد و نوار منوی پیش‌فرض (شامل منوهای Help و Settings) را می‌سازد.

    بازگشت به main.cpp

    برای این که برنامه‌مان را اجرا کنیم، باید چند خط به main.cpp بیافزاییم:

    main.cpp

    #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();
    }
    

    در اینجا (در مقایسه با آموزش ۱)، تنها سطرهای ۵، ۱۸ و ۱۹ جدید هستند. در سطر ۱۸ شیء MainWindow خود را می‌سازیم و در سطر ۱۹ آن را نمایش می‌دهیم.

    CMake

    بهترین راه ساختن برنامه استفاده از CMake است. نسبت به آموزش ۱ تنها 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
    

    به پیش

    حالا می‌توانید به استفاده از KActionها پیش بروید.