Development/Tutorials/Using KXmlGuiWindow (fa): Difference between revisions
Martianboy (talk | contribs) mNo edit summary |
No edit summary |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{TutorialBrowser_(fa)| | {{TutorialBrowser_(fa)| | ||
Line 30: | Line 30: | ||
===mainwindow.h=== | ===mainwindow.h=== | ||
<div dir="ltr"> | <div dir="ltr"> | ||
< | <syntaxhighlight lang="cpp-qt" line> | ||
#ifndef MAINWINDOW_H | #ifndef MAINWINDOW_H | ||
#define MAINWINDOW_H | #define MAINWINDOW_H | ||
Line 47: | Line 47: | ||
#endif | #endif | ||
</ | </syntaxhighlight> | ||
</div> | </div> | ||
در سطر ۷، ابتدا با <tt>class MainWindow : public KXmlGuiWindow</tt> زیرکلاسی از KXmlGuiWindow به نام MainWindow تعریف میکنیم. | در سطر ۷، ابتدا با <tt>class MainWindow : public KXmlGuiWindow</tt> زیرکلاسی از KXmlGuiWindow به نام MainWindow تعریف میکنیم. | ||
Line 57: | Line 57: | ||
===mainwindow.cpp=== | ===mainwindow.cpp=== | ||
<div dir="ltr"> | <div dir="ltr"> | ||
< | <syntaxhighlight lang="cpp-qt" line> | ||
#include "mainwindow.h" | #include "mainwindow.h" | ||
Line 66: | Line 66: | ||
setupGUI(); | setupGUI(); | ||
} | } | ||
</ | </syntaxhighlight> | ||
</div> | </div> | ||
قبل از هر چیز، در سطر اول باید فایل سرآمدی را که اعلان کلاس در آن آمدهاست، include کنیم. | قبل از هر چیز، در سطر اول باید فایل سرآمدی را که اعلان کلاس در آن آمدهاست، include کنیم. | ||
Line 79: | Line 79: | ||
===main.cpp=== | ===main.cpp=== | ||
<div dir="ltr"> | <div dir="ltr"> | ||
< | <syntaxhighlight lang="cpp-qt" line> | ||
#include <KApplication> | #include <KApplication> | ||
#include <KAboutData> | #include <KAboutData> | ||
Line 102: | Line 102: | ||
return app.exec(); | return app.exec(); | ||
} | } | ||
</ | </syntaxhighlight> | ||
</div> | </div> | ||
در اینجا (در مقایسه با آموزش ۱)، تنها سطرهای ۵، ۱۸ و ۱۹ جدید هستند. در سطر ۱۸ شیء MainWindow خود را میسازیم و در سطر ۱۹ آن را نمایش میدهیم. | در اینجا (در مقایسه با آموزش ۱)، تنها سطرهای ۵، ۱۸ و ۱۹ جدید هستند. در سطر ۱۸ شیء MainWindow خود را میسازیم و در سطر ۱۹ آن را نمایش میدهیم. | ||
Line 110: | Line 110: | ||
===CMakeLists.txt=== | ===CMakeLists.txt=== | ||
<div dir="ltr"> | <div dir="ltr"> | ||
< | <syntaxhighlight lang="ini" line> | ||
project (tutorial2) | project (tutorial2) | ||
Line 123: | Line 123: | ||
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}) | ||
</ | </syntaxhighlight> | ||
</div> | </div> | ||
Latest revision as of 15:39, 15 July 2012
سری آموزشی | آموزش مقدماتی |
پیشنیازها | آموزش ۱ - سلام دنیا |
پس از این | آموزش ۳ - 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ها پیش بروید.