Development/Tutorials/Using KXmlGuiWindow (fa)

From KDE TechBase
استفاده از 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ها پیش بروید.