Transcript
Page 1: مروری بر کلاسهای Qt

Qtمروری بر کلسهای

تهیه شده در شرکت اطلعات و ارتباطات طرحیار هجری شمسی۱۳۸۵

1

Page 2: مروری بر کلاسهای Qt

فهرست مطالبQApplication ......................................................................................................................................................................................................................9 کلس

9............................................................................................................................................................................................................................. توصیف کلس : Public :..................................................................................................................................................................................................10 نوعهای داده از نوع

10....................................................................................................................................................................................................................... متغیر های عضو :Public :......................................................................................................................................................................................................11 متد های از نوع

s Slot های Public :............................................................................................................................................................................................................13 Signal: 13............................................................................................................................................................................................................................. ها

Public :...........................................................................................................................................................................................13 از نوع Static متدهای 16..................................................................................................................................................................................................................................... ماکروها :

16................................................................................................................................................................................................چگونه با این کلس کار کنیم؟18............................................................................................................................................................................................................................سیگنالها :QApplication :............................................................................................................................................................................................18اسلتهای

18........................................................................................................................................................................................................ماکروهای این کلس :QEvent: .................................................................................................................................................................................................................................19کلس

19...........................................................................................................................................................................................................................توصیف کلس :enum: 19......................................................................................................................................................................................................................................ها

19........................................................................................................................................................................................................................................متغیرها :19..............................................................................................................................................................................................................................توابع عمومی :

QEvent :..................................................................................................................................................................................................20 کلس enumعضو 25..................................................................................................................................................................................................................... سازنده این کلس :

25..................................................................................................................................................................................................................تخریبگر این کلس :25....................................................................................................................................................................................................................چگونگی کار با آن :

QMainWindow :................................................................................................................................................................................................................26کلس 26...........................................................................................................................................................................................................................توصیف کلس :

26........................................................................................................................................................................................................................................متغیرها :26..............................................................................................................................................................................................................................توابع عمومی :

27.....................................................................................................................................................................................................................................سیگنالها:27.......................................................................................................................................................................عضوهای اضافهای که به ارث برده شده اند :

28.......................................................................................................................................................................................................نکته مهندسی نرمافزار:28.....................................................................................................................................................................................................................................یک مثال :30....................................................................................................................................................................................................................................توابع مهم :

2

Page 3: مروری بر کلاسهای Qt

QMenu : ...............................................................................................................................................................................................................................31کلس 31...........................................................................................................................................................................................................................توصیف کلس :

31........................................................................................................................................................................................................................................متغیرها :31..............................................................................................................................................................................................................................توابع عمومی :

33....................................................................................................................................................................................................................................سیگنالها :protected :........................................................................................................................................................................................................................33توابع

QChar :...................................................................................................................................................................................................................................34کلس 34...........................................................................................................................................................................................................................توصیف کلس :

enum: 34....................................................................................................................................................................................................................های عمومیenum Qchar::Category..................................................................................................................................................................................................34

enum QChar::Decomposition....................................................................................................................................................................................36enum QChar::Direction................................................................................................................................................................................................37

enum QChar::Joining....................................................................................................................................................................................................38enum Qchar::SpecialCharacter.................................................................................................................................................................................38enum QChar::UnicodeVersion..................................................................................................................................................................................39

40..............................................................................................................................................................................................................................توابع عمومی :static :...............................................................................................................................................................................................................................41توابع

41............................................................................................................................................................................................................توابع مربوطه غیر عضو :QString :................................................................................................................................................................................................................................43کلس

43.............................................................................................................................................................................................................................توصیف کلس:44...............................................................................................................................................................................................................................انواع عمومی :44..............................................................................................................................................................................................................................توابع عمومی :

static :.......................................................................................................................................................................................................................52توابع عضو 52..................................................................................................................................................................................توابع و عملگر های مربوطه غیر عضو :

QStringList :........................................................................................................................................................................................................................54کلس 54...........................................................................................................................................................................................................................توصیف کلس :55..............................................................................................................................................................................................................................توابع عمومی :

55............................................................................................................................................................................................................توابع مربوطه غیر عضو :QLocale:................................................................................................................................................................................................................................57کلس

57.............................................................................................................................................................................................................................توصیف کلس:58...............................................................................................................................................................................................................................انواع عمومی :

enum QLocale::Country :...........................................................................................................................................................................................58enum QLocale::FormatType :...................................................................................................................................................................................68

enum QLocale::Language :.........................................................................................................................................................................................68

3

Page 4: مروری بر کلاسهای Qt

75..............................................................................................................................................................................................................................توابع عمومی :static :..............................................................................................................................................................................................................76اعضای عمومی

QTextEdit : .........................................................................................................................................................................................................................77کلس 77.............................................................................................................................................................................................................................توصیف کلس:

QTextOption :.....................................................................................................................................................................................................................80کلس 80..............................................................................................................................................................................................................................توصیف کلس80...............................................................................................................................................................................................................................انواع عمومی :

enum QTextOption::Flagflags QTextOption::Flags............................................................................................................................................................................................80

enum QTextOption::WrapMode..............................................................................................................................................................................8082..............................................................................................................................................................................................................................توابع عمومی :

QCheckBox:.......................................................................................................................................................................................................................83 کلس 83..............................................................................................................................................................................................................................توصیف کلس

83..........................................................................................................................................................................................................................................متغیرها83.................................................................................................................................................................................................................................توابع عمومی

84......................................................................................................................................................................................................................................سیگنالها84.......................................................................................................................................................................................................عضوهای به ارث برده شده

QScrollBar :.........................................................................................................................................................................................................................85کلس 85..............................................................................................................................................................................................................................توصیف کلس85.................................................................................................................................................................................................................................توابع عمومی

86...................................................................................................................................................................................................عضوهای به ارث گرفته شده QLineEdit :..........................................................................................................................................................................................................................87کلس

87..............................................................................................................................................................................................................................توصیف کلسQTabBar :.............................................................................................................................................................................................................................89کلس

89..............................................................................................................................................................................................................................توصیف کلس89..................................................................................................................................................................................................................................انواع عمومی

89..........................................................................................................................................................................................................................................متغیرها90.................................................................................................................................................................................................................................توابع عمومی

91......................................................................................................................................................................................................................................سیگنالهاprotected...........................................................................................................................................................................................................................91توابع

92.......................................................................................................................................................................................................عضوهای به ارث برده شدهQFile :.....................................................................................................................................................................................................................................93کلس

93..............................................................................................................................................................................................................................توصیف کلس94..................................................................................................................................................................................................................................انواع عمومی

4

Page 5: مروری بر کلاسهای Qt

94.................................................................................................................................................................................................................................توابع عمومیstatic.............................................................................................................................................................................................................95عضوهای عمومی

96.......................................................................................................................................................................................عضوهای به ارث گرفته شده افزودهQToolBox :..........................................................................................................................................................................................................................99کلس

99..............................................................................................................................................................................................................................توصیف کلس99.........................................................................................................................................................................................................................................متغیر ها

99.................................................................................................................................................................................................................................توابع عمومیSlot100..................................................................................................................................................................................................................... های عمومی

Signal101................................................................................................................................................................................................................................... هاprotected........................................................................................................................................................................................................................101توابع

101........................................................................................................................................................................................عضوهای افزوده به ارث برده شدهQTreeView :.....................................................................................................................................................................................................................102کلس

102...........................................................................................................................................................................................................................توصیف کلس102.......................................................................................................................................................................................................................................متغیرها

102..............................................................................................................................................................................................................................توابع عمومیSignal104................................................................................................................................................................................................................................... هاprotected ......................................................................................................................................................................................................................105توابع Slot هایprotected ...............................................................................................................................................................................................................106

106...................................................................................................................................................................................عضوهای به ارث گرفته شده افزوده QtSql:...................................................................................................................................................................................................................................107ماژول QSqlDatabase .................................................................................................................................................................................................................108کلس

108........................................................................................................................................................................................................................... توصیف کلس110..............................................................................................................................................................................................................................توابع عمومی

static ............................................................................................................................................................................................................111اعضای عمومی protected........................................................................................................................................................................................................................112توابع

QSqlError :........................................................................................................................................................................................................................112کلس 112...........................................................................................................................................................................................................................توصیف کلس113.............................................................................................................................................................................................................................انواع عمومی 113..............................................................................................................................................................................................................................توابع عمومی

QSqlQuery........................................................................................................................................................................................................................115کلس 115........................................................................................................................................................................................................................... توصیف کلس116..............................................................................................................................................................................................................................توابع عمومی

QSqlField.........................................................................................................................................................................................................................118 کلس 118............................................................................................................................................................................................................................... توصیف کلس

5

Page 6: مروری بر کلاسهای Qt

118.............................................................................................................................................................................................................................انواع عمومی 118..............................................................................................................................................................................................................................توابع عمومی

QSqlTableModel............................................................................................................................................................................................................121کلس 121........................................................................................................................................................................................................................... توصیف کلس121.............................................................................................................................................................................................................................انواع عمومی 121..............................................................................................................................................................................................................................توابع عمومی

Slot 123.....................................................................................................................................................................................................................های عمومیSignals 123............................................................................................................................................................................................................................... ها

protected........................................................................................................................................................................................................................123توابع 124.....................................................................................................................................................................................عضوهای به ارث گرفته شده افزوده

125................................................................................................................................................... را کامپایل کنیم؟Qt:چگونه برنامههای ۰ ضمیمه شماره Qt..................................................................................................................................................................................................126:یونیکد در ۱ضمیمه شماره 128................................................................................................................................................................................................ : فارسینویسی ۲ضمیمه شماره

128............................................................................................................................................................................................................................................نکته 128............................................................................................................................................................................................................................................نکته

130............................................................................................................................................................................................................نکته مهندسی نرمافزارGTK و Qt.................................................................................................................................................................................................................................130131.............................................................................................................................................................................................................................................نکتهwidget...........................................................................................................................................................................................132:یک مثال از چند ۳ضمیمه 148...........................................................................................................................................................................................................:بین المللیسازی۴ضمیمه

tr:.....................................................................................................................................................................................................................148 استفاده از تابع 149........................................................................................................................................... برای مقدارهای شتابدهندهQKeySequenceاستفاده از 149.......................................................................................................................................... برای مقدارهای شتابدهنده:QKeySequenceاستفاده از 149........................................................................................................................................................................... برای متون پویاQString::argاستفاده از 149.......................................................................................................................................................................... برای متون پویا:QString::argاستفاده از

150........................................................................................................................................................................................................................ترجمه خروجی

6

Page 7: مروری بر کلاسهای Qt

QApplication کلس

QApplication کلس

توصیف کلس : و تنظیمات اصلی برنامه را مدیریت میکند.GUIاین کلس روند کنترلهای کاربردی

ها از یک سیستم ویندوز و دیگر منابع پردازش و توزیعEvent ها می شود.جایی که تمام Event این کلس در واقع شامل حلقه اصلی ها بر عهده این کلس است.sessionمیگردند.این کلس همچنین بارگذاری و اتمام یک کلس را بر عهده دارد.همچنین مدیریت

نکته : استفاده کنید.QCoreApplication کار میکند باید از این کلس استفاده کنید.و اگر نه باید از کلس GUIاگر برنامه شما با

گروه تقسیم میشوند :۱۰توابع این کلس به نام توابع مربوطهنام گروه

,()desktopSettingsAware(), setDesktopSettingsAwareتنظیمات سیستمcursorFlashTime(), setCursorFlashTime(), doubleClickInterval(), setDoubleClickInterval(), setKeyboardInputInterval(), wheelScrollLines(), setWheelScrollLines(), palette(), setPalette(), font(),

setFont(), fontMetrics.()

,()exec(), processEvents(), exit(), quit(). sendEvent ها Eventکار با postEvent(), sendPostedEvents(), removePostedEvents(), hasPendingEvents(), notify(), macEventFilter(), qwsEventFilter(), x11EventFilter(), x11ProcessEvent(),

winEventFilter.()

().style(), setStyle های گرافیکیStyle برای QStyleکار با کلس

().colorSpec(), setColorSpec(), qwsSetCustomColorsطرز استفاده از رنگها

().installTranslator(), removeTranslator() translateارایه متون

7

Page 8: مروری بر کلاسهای Qt

QApplication کلس

نام توابع مربوطهنام گروه

Widget ها

allWidgets(), topLevelWidgets(), desktop(), activePopupWidget(), activeModalWidget(), clipboard(),

focusWidget(), winFocus(), activeWindow(), widgetAt.()

,()overrideCursor(), setOverrideCursorکار با کرسرrestoreOverrideCursor.()

X Window Systemهماهنگی با

flushX(), syncX()

().isSessionRestored(), sessionId(), commitData(), saveState ها sessionمدیریت

().closeAllWindows(), startingUp(), closingDown(), typeمتفرقه

:Public نوعهای داده از نوع • enum ColorSpec { NormalColor, CustomColor, ManyColor }

• enum Type { Tty, GuiClient, GuiServer }

متغیر های عضو :• cursorFlashTime : int• doubleClickInterval : int• globalStrut : QSize• keyboardInputInterval : int• layoutDirection : Qt::LayoutDirection•

• quitOnLastWindowClosed : bool• startDragDistance : int• startDragTime : int• wheelScrollLines : int• windowIcon : QIcon

8

Page 9: مروری بر کلاسهای Qt

QApplication کلس

مشتق شدهاند.QCoreApplication متغیر از کلس ۳•

مشتق شده است.QObject متغیر از کلس ۱

:Public متد های از نوع • QApplication ( int & argc, char ** argv )

• QApplication ( int & argc, char ** argv, bool GUIenabled )

• QApplication ( int & argc, char ** argv, Type type )

• QApplication ( Display * display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 )

• QApplication ( Display * display, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 )

• virtual ~QApplication ()

• virtual void commitData ( QSessionManager & manager )

• QInputContext * inputContext () const

• bool isSessionRestored () const

• virtual bool macEventFilter ( EventHandlerCallRef caller, EventRef event )

• virtual bool qwsEventFilter ( QWSEvent * event )

• void qwsSetCustomColors ( QRgb * colorTable, int start, int numColors )

• virtual void saveState ( QSessionManager & manager )

• QString sessionId () const

• QString sessionKey () const

• void setInputContext ( QInputContext * inputContext )

• virtual bool x11EventFilter ( XEvent * event )

• int x11ProcessEvent ( XEvent * event )

• 4 public functions inherited from QCoreApplication

• 28 public functions inherited from QObject

9

Page 10: مروری بر کلاسهای Qt

QApplication کلس

10

Page 11: مروری بر کلاسهای Qt

QApplication کلس

s Slot های Public:

void aboutQt ()

void closeAllWindows ()

مشتق شده است.QcoreApplication از کلس slot یک

مشتق شده است. QObject از کلس public از نوع slotیک

Signal: ها

• void focusChanged ( QWidget * old, QWidget * now )

• void lastWindowClosed ()

مشتق شده است.QCoreApplicationیک سیگنال از کلس •

مشتق شده است.QObjectیک سیگنال از کلس •

:Public از نوع Staticمتدهای

• QWidget * activeModalWidget ()

• QWidget * activePopupWidget ()

• QWidget * activeWindow ()

• QWidgetList allWidgets ()

• void beep ()

• void changeOverrideCursor ( const QCursor & cursor )

• QClipboard * clipboard ()

• int colorSpec ()

11

Page 12: مروری بر کلاسهای Qt

QApplication کلس

• int cursorFlashTime ()

• QDesktopWidget * desktop ()

• bool desktopSettingsAware ()

• int doubleClickInterval ()

• int exec ()

• QWidget * focusWidget ()

• QFont font ( const QWidget * widget = 0 )

• QFontMetrics fontMetrics ()

• QSize globalStrut ()

• bool isEffectEnabled ( Qt::UIEffect effect )

• bool isLeftToRight ()

• bool isRightToLeft ()

• int keyboardInputInterval ()

• Qt::KeyboardModifiers keyboardModifiers ()

• Qt::LayoutDirection layoutDirection ()

• Qt::MouseButtons mouseButtons ()

• QCursor * overrideCursor ()

• QPalette palette ()

• QPalette palette ( const QWidget * widget )

• QPalette palette ( const char * className )

• bool quitOnLastWindowClosed ()

• QDecoration & qwsDecoration ()

• void qwsSetDecoration ( QDecoration * decoration )

• QDecoration * qwsSetDecoration ( const QString & decoration )

• void restoreOverrideCursor ()

12

Page 13: مروری بر کلاسهای Qt

QApplication کلس

• void setActiveWindow ( QWidget * active )

• void setColorSpec ( int spec )

• void setCursorFlashTime ( int )

• void setDesktopSettingsAware ( bool on )

• void setDoubleClickInterval ( int )

• void setEffectEnabled ( Qt::UIEffect effect, bool enable = true )

• void setFont ( const QFont & font, const char * className = 0 )

• void setGlobalStrut ( const QSize & )

• void setKeyboardInputInterval ( int )

• void setLayoutDirection ( Qt::LayoutDirection direction )

• void setOverrideCursor ( const QCursor & cursor )

• void setPalette ( const QPalette & palette, const char * className = 0 )

• void setQuitOnLastWindowClosed ( bool quit )

• void setStartDragDistance ( int l )

• void setStartDragTime ( int ms )

• void setStyle ( QStyle * style )

• QStyle * setStyle ( const QString & style )

• void setWheelScrollLines ( int )

• void setWindowIcon ( const QIcon & icon )

• int startDragDistance ()

• int startDragTime ()

• QStyle * style ()

• void syncX ()

• QWidget * topLevelAt ( const QPoint & point )

• QWidget * topLevelAt ( int x, int y )

13

Page 14: مروری بر کلاسهای Qt

QApplication کلس

• QWidgetList topLevelWidgets ()

• Type type ()

• int wheelScrollLines ()

• QWidget * widgetAt ( const QPoint & point )

• QWidget * widgetAt ( int x, int y )

• QIcon windowIcon ()

• 30 static public members inherited from QCoreApplication

• 4 static public members inherited from QObject

ماکروها :

• qApp

چگونه با این کلس کار کنیم؟ میباشد! بلکه پدر تمامQtاین کلس پدر تمام برنامهها میباشد.(اشتباه نکنید که پدر تمام کلسهای

پردازشهای درون برنامه شما میباشد.) به برنامه زیر دقت کنید :1 #include <QApplication>2 #include <QPushButton>3 int main(int argc, char *argv[])4 {5 QApplication app(argc, argv);6 QPushButton hello("hello world!");7 hello.show();8 return app.exec();9 }

QApplication از نوع Object دارا میباشد.ابتدا main سازنده این کلس چندین فرمت دارد که بیشترین استفاده را با دو پارامتر تابع ) ۵باید ساخت (در هر برنامهای) و به صورت شیی از کل برنامه از آن استفاده کرد.(خط

.helloWorld تعریف شده و روی آن نوشته شده PushButton یک ۶در خط را نمایش دهد.PushButton میگوییم تا آن hello به شی show با تابع ۷در خط

ها وارد میشود وEvent اجتناب کنید.این تابع در حلقه اصلی exec وجود دارد لزمالجراست.شما نمیتوانید از تابع ۸نکتهای که در خط

14

Page 15: مروری بر کلاسهای Qt

QApplication کلس

مربوطهwidgetها آنها را دریافت میکند و به Event اصلی برنامه از بین برود.حلقه اصلی widget اجرا شود و یا exitصبر میکند تا تابع میفرستد.بدین خاطرصدا زدن این تابع اجتناب ناپذیر است.

نکتهای که در برنامه بال وجود دارد کلید نمایش داده هیچ کاری انجام نمیدهد. سیگنالها و اسلتها موجود میباشند که فرض بر این است که خواننده این مطلب با مفاهیم سیگنال و اسلت آشناQtدر کتابخانه

میباشد.حال بیایید برنامه بال را با این دو مفهوم گسترش دهیم :

1#include <QApplication>2#include <QPushButton>3 int main(int argc, char *argv[])4 {5 QApplication app(argc, argv);6 QPushButton hello("hello world!");7 QObject::connect(&hello,SIGNAL(clicked()),&app,SLOT(quit()));8 hello.show();9 return app.exec();10 }

static که QObject از کلس connect میتوان از برنامه خارج شد.بدینگونه که تابع PushButtonدر برنامه بال با کلیک کردن بر روی میباشد, یک سیگنال را به یک اسلت متصل میکند.دو پارامتر اول مربوط به سیگنال و دو پارامتر دوم مربوط به اسلت میباشند.پارامتر

باشد که سیگنال مربوطه را میگیرد.پارامتر سوم شی مربوط به اسلتSIGNALاول شی مربوط به سگنال و پارامتر دوم باید تابع () که پارامتر آن اسلت مربوطه میباشد.SLOTمیباشد و پارامتر آخر تابع ()

تعریفQPushButton که از نوع hello نمیباشد ولی چرا برای شی QPushButton عضو کلس clickedممکن بگویید که چرا سیگنال به ارث برده شده است.همچنین اسلتQAbstractButtonشده است کار میکند و به آن ارتباط داده شده است.زیرا این سیگنال از کلس

quit از کلس QCoreApplication به ارث برده شده است و عضو لیست ثابت اسلتهای کلس QApplication.نمیباشد به دلیل اینکه یکی از کلسهای پایه میباشد مثال برای آن نسبت به کلسهای دیگر کمتر میتوان آورد.اما بیاییدQApplicationکلس

به تشریح بعضی از توابع آن بپردازیم : مشخص کنید, برایtitle برنامه میشود.و اگر خواستید برای آن title برنامه خود چیزی را مشخص نکنید, اسم فایل برنامه titleاگر برای

برنامه شما میشود.به صورت زیر :titleسازنده این کلس پارامتر سومی را ایجاد کنید و آنگاه همان نویسه QApplication app(argc, argv, Hello world! );” ”

QApplication قبل از سازنده false زیر با پارامتر staticاگر خواستید تا برنامه از رنگ و فونت پیش فرض سیستم استفاده نکند, باید از تابع استفاده نمایید :

15

Page 16: مروری بر کلاسهای Qt

QApplication کلس

QApplication::setDeskSettingsAware(false);

هستند استفاده کنید :boolean زیر که هر دو از نوع static صفحه کلید میتوانید از دو تابع Directionبرای امتحان کردن

QApplication::isLeftToRight()

QApplication::isRightToLeft()

سیگنالها : شدن یک شی فرستاده میشود.kill میباشد که برای QObject::destroyedسیگنال مهمی که قابل بررسی میباشد

میگیرد که یکیQWidget میباشد که دو پارامتر از نوع QApplication::focusChangedسیگنال دیگری که خیلی مورد استفاده دارد, اعمال میگردد فزستاده میشود.widgetحالت قدیم آن و دیگری حالت جدید آن میباشد.در واقع برای تغییری که روی یک

نکته :

همانگونه که دیده میشود برای یک تابع,سیگنال و یا اسلت اسم کلس آن آورده میشود.در صورتی که در حال توضیح کلسQApplication.هستیم.این برای آن است که این کلس از خیلی از کلسهای دیگر خیلی چیزها را به ارث میبرد

:QApplicationاسلتهای نسخه جاری را لود میکند وQt وجود دارد که برای نمایش یک پنجره است که تمام مشخصات QApplication::aboutQtاسلتی به نام

درون همان پنجره نشان میدهد.

وجود دارد که بالترین اولویت پنجره را میبندد.QApplication::closeAllWindowاسلتی به نام

ماکروهای این کلس : را صدا میزند.QCoreApplication::instanceاین کلس یک ماکرو بیشتر ندارد که این ماکرو تابع

16

Page 17: مروری بر کلاسهای Qt

: QEventکلس

: QEventکلس

توصیف کلس : ها کار میکنند.اشیا رویدادها شامل پارامترهای رویدادها میباشد.حلقه اصلیeventاین کلس پایه تمام کلسهایی میباشد که بر روی

های حال میشود از صف رویدادها فراخوانی,ترجمهWidget حال را که مربوط به کلسها و Windows System رویدادهای Qtرویدادهای بفرستد.QObject کند.و ترجمه شده آنها را به QEventبه

ارث میبرند :QEventکلسهایی که از

QAccessibleEvent, QActionEvent, QChildEvent, QCloseEvent, QCustomEvent, QDragLeaveEvent, QDropEvent, QFileOpenEvent, QFocusEvent, QHelpEvent, QHideEvent, QHoverEvent, QIconDragEvent, QInputEvent, QInputMethodEvent, QMoveEvent, QPaintEvent, QResizeEvent, QShortcutEvent, QShowEvent, QStatusTipEvent, QTimerEvent, QWhatsThisClickedEvent و QWindowStateChangeEvent

enum: ها• enum Type { None, AccessibilityDescription, AccessibilityHelp, AccessibilityPrepare, ..., MaxUser }

متغیرها :• accepted : bool

توابع عمومی :• QEvent ( Type type )

• virtual ~QEvent ()

• void accept ()

• void ignore ()

• bool isAccepted () const

• void setAccepted ( bool accepted )

• bool spontaneous () const

• Type type () const

17

Page 18: مروری بر کلاسهای Qt

: QEventکلس

:QEvent کلس enumعضو enum ی به نامtype تمام رویدادهای معتبر Qt را درون خود تعریف کرده است.انواع event.و کلسهای مربوط به آنها در زیر آمدهاند

enumثابت مقدار توضیحQEvent::None 0 یک رویداد نمیباشد.

QEvent::AccessibilityDescription 130 استفاده شده برای جستجوی متون توصیفی قابل)QAccessibileEventدسترس.(

QEvent::AccessibilityHelp 119 استفاده شده برای جستجوی متون راهنمای قابل)QAccessibileEventدسترس.(

QEvent::AccessibilityPrepare 86 اطلعات قابل دسترسی که واجب میباشند.

QEvent::ActionAdded 114 )QActionEvent جدید اضافه شده است.(Actionیک

QEvent::ActionChanged 113 )QActionEvent تغییر کرده است.(Actionیک

QEvent::ActionRemoved 115 )QActionEvent پاک شده است.(Actionیک

QEvent::ActivationChange 99 تغییر کرده است.widgetوضعیت فعالیت ویندوز یک

QEvent::ApplicationActivated 121 برنامه برای کاربر قابل دسترس شد.

QEvent::ApplicationDeactivated 122 برنامه معوق شده و برای کاربر غیر قابل دسترسمیباشد.

QEvent::ApplicationFontChange 36 فونت پیش فرض برنامه تغییر کرده است.

QEvent::ApplicationLayoutDirectionChange 37 LTR و RTLجهت پیشفرض نویسهها تغییر کرده است.

QEvent::ApplicationPaletteChange 38 الگوی رنگ پیشفرض برنامه تغییر کرده است.

QEvent::ApplicationWindowIconChange 35 آیکون برنامه تغییر کرده است.

QEvent::ChildAdded 68 داده شده است.(Childبه یک شی یک رویداد QChildEvent(

QEvent::ChildPolished 69 گرفته است.(polish فرزند یک widgetیک QChildEvent(

QEvent::ChildRemoved 71 را پاک کرده است.(childشیی یک رویداد QChildEvent(

QEvent::Clipboard 40 محتوای حافظه موقت تغییر کرده است.(

18

Page 19: مروری بر کلاسهای Qt

: QEventکلس

QClipboardEvent(

QEvent::Close 19 widget).بسته شد QCloseEvent(

QEvent::ContextMenu 82 )QContextMenuمتن منوی کرکرهای.(

QEvent::DeferredDelete 52 بعد از اینکه شی مربوطه سودش را میرساند پاک خواهدشد.

QEvent::DragEnter 60 drag & drop میشود تا یک widgetمکاننما وارد یک )QDragEnterEventاتفاق بیافتد.(

QEvent::DragLeave 62 & drag را ترک می کند.تا یک widgetمکاننما یک drop).اتفاق بیافتد QDragLeaveEvent(

QEvent::DragMove 61 در حال پیشرفت است.(drag & dropیک QDragMoveEvent(

QEvent::Drop 63 )QDropEvent کامل شد.(drag & dropیک

QEvent::EnabledChange 98 فعال شده تغییر کرده است.widgetوضعیت

QEvent::Enter 10 شده است.widgetماوس وارد مرز یک

QEvent::EnterWhatsThisMode 124 ”? میشود,what is thisهنگامی که برنامه وارد حالت " messageی که بالترین سطح را دارد یک widgetبه

میفرستد.

QEvent::FileOpen 116 )QFileOpenEventدرخواست باز کردن فایلْ(

QEvent::FocusIn 8 widget).نقطه تقاطع صفحه کلید را افزایش میدهد QFocusEvent(

QEvent::FocusOut 9 widget).نقطه تقاطع صفحه کلید را از دست میدهد QFocusEvent(

QEvent::FontChange 97 تغییر کرده است.widgetقلم

QEvent::Hide 18 widget).مخفی شده است QHideEvent(

QEvent::HideToParent 27 widget.فرزند مخفی شده است

QEvent::HoverEnter 127 شناور شده است.(widgetمکاننمای ماوس وارد یک QHoverEvent(

QEvent::HoverLeave 128 شناور شده را ترکwidgetمکاننمای ماوس یک

19

Page 20: مروری بر کلاسهای Qt

: QEventکلس

)QHoverEventمیکند.(

QEvent::HoverMove 129 شناور شده حرکتwidgetمکاننمای ماوس داخل یک )QHoverEventمیکند.(

QEvent::IconDrag 96 شده است.(dragآیکون یک ویندوز به بیرون QIconDragEvent(

QEvent::IconTextChange 101 تغییر کرده است.widgetمتن آیکون

QEvent::InputMethod 83 از یک روش ورودی استفاده شده است.(QInputMethodEvent(

QEvent::KeyPress 6 )QKeyEventکلیدی فشرده شده (

QEvent::KeyRelease 7 )QKeyEventکلیدی رها شده است.(

QEvent::LanguageChange 89 زبان برنامه تغییر کرد.

QEvent::LayoutDirectionChange 90 جهت نویسه تغییر کرد.

QEvent::LayoutRequest 76 نیاز به دوباره درست شدن دارد.widgetطرح

QEvent::Leave 11 را ترک کرد.widgetماوس مرزهای

QEvent::LeaveWhatsThisMode 125 ”?را ترکwhat is thisهنگامی که برنامه حالت "ی که بالترین سطح را دارد یک widgetمیکند, به message.میفرستد

QEvent::LocaleChange 88 سیستم منطقهای تغییر کرده است.

QEvent::MenubarUpdated 153 خط منوی ویندوز به روز شده است.

QEvent::MetaCall 43 احضار یک روش ناهماهنگ از طریقQMetaObject::invokeMethod

QEvent::ModifiedChange 102 تغییر کرده است.widgetحالت دستکاری

QEvent::MouseButtonDblClick 4 )QMouseEventماوس دوبار فشرده شد.(

QEvent::MouseButtonPress 2 )QMouseEventماوس یکبار فشرده شد.(

QEvent::MouseButtonRelease 3 )QMouseEventماوس رها شد.(

QEvent::MouseMove 5 )QMouseEventماوس حرکت کرد.(

20

Page 21: مروری بر کلاسهای Qt

: QEventکلس

QEvent::MouseTrackingChange 109 حالت دنبال کردن ماوس تغییر کرد.

QEvent::Move 13 )QMouseEvent تغییر کرد.(widgetجای

QEvent::Paint 12 صفحه نمایش به صورت ضروری به روز شد.(QPaintEvent(

QEvent::PaletteChange 39 تغییر کرد.widgetطرح رنگ

QEvent::ParentAboutToChange 131 راجع به تغییر آن است.widgetوالد

QEvent::ParentChange 21 تغییر کرد.widgetوالد

QEvent::Polish 75 widget.صیغل خورد

QEvent::PolishRequest 74 صیغل بخورد.widgetبهتر است

QEvent::QueryWhatsThis 123 () کند اگر آن "accept رویداد را widgetبهتر است What is this.به صورت راهنما داشته باشد ?”

QEvent::Resize 14 widget).تغیر اندازه داد QResizeEvent(

QEvent::Shortcut 117 کلیدی در پردازشهای فرزند فشرده شد برای کلید)QShortcutEventمیانبر.(

QEvent::ShortcutOverride 51 کلیدی در پردازشهای فرزند فشرده شد برای کنار)QKeyEventگذاشتن کلید میانبر.(

QEvent::Show 17 widget).روی صفحه نمایش نشان داده شد QShowEvent(

QEvent::ShowToParent 26 فرزند نشان داده شد.widgetیک

QEvent::SockAct 50 سوکت فعال شد.این برای پیاده سازیQSocketNotifier.استفاده میشود

QEvent::StatusTip 112 )QStatusTipEventوضعیت درخواست شده.(

QEvent::StyleChange 100 تغییر کرده است.widgetشمای

QEvent::TabletMove 87 حرکت کرده است.(Wacomقلم طبلت تکنولوژی QTabletEvent(

QEvent::TabletPress 92 فشرده شده است.(Wacomقلم طبلت تکنولوژی QTabletEvent(

21

Page 22: مروری بر کلاسهای Qt

: QEventکلس

QEvent::TabletRelease 93 رها شده است.(Wacomقلم طبلت تکنولوژی QTabletEvent(

QEvent::Timer 1 )QTimerEventرویدادهای منظم تایمر. (

QEvent::ToolBarChange 120 MAC OS مخصوص سیستم عامل enumاین عنصر میباشد.

QEvent::ToolTip 110 )QHelpEvent درخواست شده.(tooltipیک

QEvent::UpdateLater 78 widgetبهتر است برای دوباره ترسیم شدن در زمانهای بعدی به صف درآید.

QEvent::UpdateRequest 77 widget.بهتر است دوباره ترسیم گردد

QEvent::WhatsThis 111 widget" بهتر است محتوای What is thisرا نمایش ” )QHelpEventدهد.(

QEvent::WhatsThisClicked 118 ” را نمایشWhat is this ی که "widgetکلیدی در میدهد فشرده شده است.

QEvent::Wheel 31 )QWheelEventچرخهای ماوس میچرخند.(

QEvent::WinEventAct 132 event اتفاق افتاده است.ویندوز فعالیت مشخصات

QEvent::WindowActivate 24 ویندوز فعال شده است.

QEvent::WindowDeactivate 25 ویندوز غیر فعال شده است.

QEvent::WindowIconChange 34 آیکون ویندوز تغییر کرده است.

QEvent::WindowStateChange 105 اندازه ویندوز (حداکثر,حداقل و تمام صفحه ) تغییر کرده)QWindowStateChangeEventاست.(

QEvent::WindowTitleChange 33 تیتر ویندوز تغییر کرده است.

22

Page 23: مروری بر کلاسهای Qt

: QEventکلس

سازنده این کلس : را میگیرد که عضوTypeی به نام enumاین کلس به صورت پیشفرض یک سازنده بیشتر ندارد.که به صورت پارامتر یکی از عنصرهای

به شمار میآیند.eventهمین کلس است و تمام عناصر آن یک

Eqevent::EQevent(Type type);

تخریبگر این کلس :ی را که ساخته شده باشد از بین میبرد.eventتخریبگر این هر

QEvent::~QEvent () [virtual]

چگونگی کار با آن : را بپذیرد.event به آن میگویید که شی accept های شما را بارگذاری میکند.با تابع eventاین کلس در واقع

انجام میدهید که در جلوتر به آنها خواهیم پرداخت.(با ذکر مثال)QEventدر واقع کار اصلی را در کلسهای فرزند

23

Page 24: مروری بر کلاسهای Qt

:QMainWindowکلس

:QMainWindowکلس

توصیف کلس : های آن را بارگذاری میکند.widgetاین کلس برای شما یک پنجره اصلی ایجاد میکند.و تمام

را به ارث میبرد.QWidgetاین کلس , کلس

متغیرها :• iconSize : QSize

• toolButtonStyle : Qt::ToolButtonStyle

توابع عمومی :• QMainWindow ( QWidget * parent = 0, Qt::WFlags flags = 0 )

• ~QMainWindow ()

• void addDockWidget ( Qt::DockWidgetArea area, QDockWidget * dockwidget )

• void addDockWidget ( Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation )

• void addToolBar ( Qt::ToolBarArea area, QToolBar * toolbar )

• void addToolBar ( QToolBar * toolbar )

• QToolBar * addToolBar ( const QString & title )

• void addToolBarBreak ( Qt::ToolBarArea area = Qt::TopToolBarArea )

• QWidget * centralWidget () const

• Qt::DockWidgetArea corner ( Qt::Corner corner ) const

• virtual QMenu * createPopupMenu ()

• Qt::DockWidgetArea dockWidgetArea ( QDockWidget * dockwidget ) const

24

Page 25: مروری بر کلاسهای Qt

:QMainWindowکلس

• QSize iconSize () const

• void insertToolBar ( QToolBar * before, QToolBar * toolbar )

• void insertToolBarBreak ( QToolBar * before )

• QMenuBar * menuBar () const

• void removeDockWidget ( QDockWidget * dockwidget )

• void removeToolBar ( QToolBar * toolbar )

• bool restoreState ( const QByteArray & state, int version = 0 )

• QByteArray saveState ( int version = 0 ) const

• void setCentralWidget ( QWidget * widget )

• void setCorner ( Qt::Corner corner, Qt::DockWidgetArea area )

• void setIconSize ( const QSize & iconSize )

• void setMenuBar ( QMenuBar * menuBar )

• void setStatusBar ( QStatusBar * statusbar )

• void setToolButtonStyle ( Qt::ToolButtonStyle toolButtonStyle )

• void splitDockWidget ( QDockWidget * first, QDockWidget * second, Qt::Orientation orientation )

• QStatusBar * statusBar () const

• Qt::ToolBarArea toolBarArea ( QToolBar * toolbar ) const

• Qt::ToolButtonStyle toolButtonStyle () const

سیگنالها:• void iconSizeChanged ( const QSize & iconSize )

• void toolButtonStyleChanged ( Qt::ToolButtonStyle toolButtonStyle )

عضوهای اضافهای که به ارث برده شده اند :

25

Page 26: مروری بر کلاسهای Qt

:QMainWindowکلس

به ارث برده شدهاند.QWidget اسلت از کلس ۱۷

به ارث برده شده است.QObject اسلت از ۱

به ارث برده شدهاند.QWidget از static عضو ۴

به ارث برده شدهاند.QObject از public عضو ۴

به ارث گرفته شدهاند.QWidget از protected تابع ۳۹

به ارث گرفته شدهاند.QObject از protected تابع ۷

به ارث گرفته شده است.QPaintDevice از protetcted تابع ۱

نکته مهندسی نرمافزار: آن را به صورت یک هدر فایل در میآورند.بدین منظورprototype آن از پیادهسازی آن جدا باشد.معمول prototypeبرای هر کلس , باید

برای تعریف کلسهای خود این نکته را همیشه رعایت کنید.این موجب میگردد کد از خود کلس جدا گردد.

یک مثال : البته به خاطر داشته باشید که مثال زیر بر خلف نکته بال در یک فایل است و این فقط برای کوچک کردن متن این سند میباشد.و اگر نه

فایل میشود : ۳در هنگام کد زدن باید آن را جدا نوشت که در مجموع

برنامه درآن است.main.فایلی که ۱

.فایلی که کلس مذکور در آن تعریف شده است.۲

.هدر فایل آن کلس.۳

لطفا به مثال توجه کنید :

#include <QApplication>

1#include <QtGui>

2#include <QMainWindow>

3 class QTextEdit;

4///////////////////////definition of oo class /////////////////////////////////////////////////////////

5 class oo : public QMainWindow

26

Page 27: مروری بر کلاسهای Qt

:QMainWindowکلس

6{

7 public:

8 oo(int y);

9 QTextEdit *p;

10};

11/////////////////////////definition of constructur//////////////////////////////////////////////////

12oo::oo(int y)

13{

14 p=new QTextEdit;

15 p->show();

16}

17/////////////////////////main of program///////////////////////////////////////////

18int main(int argc, char *argv[])

19 {

20 QApplication app(argc, argv);

21 oo r(1);

22 return app.exec();

23 }

و یا کل اگر بخواهیم بگوییم, در برنامههای شیگرا اگر از ارث بری استفاده نکنیم, میشود گفت که از امکانات دوریQtدر برنامههای به حساب آوریم, آن را یک کلس کردیم و از کلسwidgetمیکنیم.در برنامه بال برای اینکه پنجرهای که ساختیم را یک

QMainWindow.مشتق کردیم

oo آن را نمایش میدهیم.یعنی هر موقع یک شی از کلس show ساخته و با متد QTextEditدرون سازنده آن یک ویرایشگر را با کلس ساخته شود به همراه آن یک پنجره و یک ویرایشگر به نمایش درآید.

:نکته برنامهنویسی شیگرا

27

Page 28: مروری بر کلاسهای Qt

:QMainWindowکلس

تعریف کردیم که:oo را داخل کلس pاشارهگر

استفاده کنیم.show. بتوانیم از متد ۱

از این کلس باشد.widget.ویرایشگر ما یک ۲

:Qtنکتهای در مورد

پاس نکنید برنامه دارای مشکل میشود و کامپایل نمیشود.intاگر به سازنده آن پارامتری از نوع

توابع مهم :

void QMainWindow::setCentralWidget ( QWidget * widget)

اصلی پنجره در نظر میگیرد.widget مذکور را به عنوان widgetاین تابع

نکته : این تابع برای هر پنجره یکبار فراخوانی میشود.

QMenu * QMainWindow::createPopupMenu () [virtual]

این تابع که به ارث هم برده میشود یک منوی کرکرهای برای شما ایجاد میکند.از آن دسته منوها که اگر کلیک راست را فشار دهیدبرایتان ظاهر خواهد شد.اگر خواستید که منویی به دلخواه خویش داشته باشید, این تابع را بازنویسی کنید.

void QMainWindow::removeToolBar ( QToolBar * toolbar )

شما را پاک میکند و به صورت مخفی درمیآورد.toolbar این تابع

void QMainWindow::insertToolBar ( QToolBar * before, QToolBar * toolbar )

یا در راست و یا درdirection بنا به toolbar اشغال شده است به نمایش میگذارد.این befor را در جایی که توسط متغیر toolbarاین یک چپ ظاهر میگردد.

یک اصطلح :

widget های Dock منظور شکستن یک پنجره به اجزای گوناگون می باشد.مثل frameset در HTML.

28

Page 29: مروری بر کلاسهای Qt

: QMenuکلس

: QMenuکلس

توصیف کلس : کارکرد.QMenuItem و QMenu ,QMenuBarبرای ایجاد باید با سه کلس

منو, یک منوی گلچین شده است.widget منو برای منوبار,محتویات منو و منوی کرکرهای ایجاد میکند.یک widgetاین کلس یک

به صورت عمودی نمایش داده میشود وAction به لیست اضافه میشود.یک addAction ها میباشد که با تابع Actionیک منو لیستی از چیز داشته باشند :۳ ها میتوانند Action رندر میشود.QStyleتوسط کلس

.یک برچسب که به صورت متن میباشد.۱

.یک آیکون که در چپترین سمت آن میباشد.۲

.یک کلید میانبر.۳

داریم: Action گونه ۳در اینجا

.جداکنندهها ۱

۲.Action .هایی که دارای زیرمنو هستند

۳.Action.هایی که یک کار را انجام میدهند

درج میشوند.addMenu و نوع دوم توسط تابع addSeparatorجدا کنندهها نوسط تابع

متغیرها :• icon : QIcon

• tearOffEnabled : bool

• title : QString

بقیه متغیر ها به ارث گرفته میشوند.

توابع عمومی :• QMenu ( QWidget * parent = 0 )

29

Page 30: مروری بر کلاسهای Qt

: QMenuکلس

• QMenu ( const QString & title, QWidget * parent = 0 )

• ~QMenu ()

• QAction * actionAt ( const QPoint & pt ) const

• QRect actionGeometry ( QAction * act ) const

• QAction * activeAction () const

• QAction * addAction ( const QString & text )

• QAction * addAction ( const QIcon & icon, const QString & text )

• QAction * addAction ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 )

• QAction * addAction ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 )

• QAction * addMenu ( QMenu * menu )

• QMenu * addMenu ( const QString & title )

• QMenu * addMenu ( const QIcon & icon, const QString & title )

• QAction * addSeparator ()

• void clear ()

• QAction * defaultAction () const

• QAction * exec ()

• QAction * exec ( const QPoint & p, QAction * action = 0 )

• void hideTearOffMenu ()

• QIcon icon () const

• QAction * insertMenu ( QAction * before, QMenu * menu )

• QAction * insertSeparator ( QAction * before )

• bool isTearOffEnabled () const

• bool isTearOffMenuVisible () const

• QAction * menuAction () const

30

Page 31: مروری بر کلاسهای Qt

: QMenuکلس

• void popup ( const QPoint & p, QAction * atAction = 0 )

• void setActiveAction ( QAction * act )

• void setDefaultAction ( QAction * act )

• void setIcon ( const QIcon & icon )

• void setTearOffEnabled ( bool )

• void setTitle ( const QString & title )

• QString title () const

به ارث گرفته میشوند.QWidget تابع عمومی از کلس ۱۸۸

به ارث گرفته میشوند.QObject تابع عمومی ازکلس ۲۸

به ارث گرفته میشوند.QPaintDevice تابع عمومی از کلس ۱۲

سیگنالها :• void aboutToShow ()

• void hovered ( QAction * action )

• void triggered ( QAction * action )

:protectedتوابع • int columnCount () const

در این کلس سعی خواهیم کرد تا با یک مثال همه چیز را بیان کنیم.البته این کلس در ضمیمه این سند میباشد.

31

Page 32: مروری بر کلاسهای Qt

:QCharکلس

:QCharکلس

توصیف کلس : بیتی ایجاد میکند.۱۶این کلس یک کارکتر یونیکد

این کلس یک سری توابع ردهبندی را فراهم میکند.توابع تبدیل فرمتها از و یا به فرمت خاصی را فراهم میکند.توابع ردهبندی شامل موجود میباشد.در صورتی که محدوده کارکرد آنان فقط بر روی یونیکدCPP در cctypeتوابعی میشوند که شبیه آنها در هدر فایل

میباشد.

مشخص میکند کهjoining را فراهم کرده که جهت نوشتن را مشخص میکند.همچنین با تابعی به نام directionاین کلس تابعی به نام های متضاد میباشد.)directionچگونه آنها به بچسبند.(این تابع مخصوصا برای

enum: های عمومی• enum Category { Mark_NonSpacing, Mark_SpacingCombining, Mark_Enclosing, Number_DecimalDigit, ...,

NoCategory }

• enum Decomposition { NoDecomposition, Canonical, Circle, Compat, ..., Wide }

• enum Direction { DirAL, DirAN, DirB, DirBN, ..., DirWS }

• enum Joining { Center, Dual, OtherJoining, Right }

• enum SpecialCharacter { Null, Nbsp, ReplacementCharacter, ObjectReplacementCharacter, ..., LineSeparator }

• enum UnicodeVersion { Unicode_1_1, Unicode_2_0, Unicode_2_1_2, Unicode_3_0, ..., Unicode_Unassigned }

enum Qchar::Category

ترسیم طبقاتی کارکترهای یونیکد را انجام میدهد.enumاین

کارکترهای زیر کارکترهای با قاعده در یونیکد میباشند.

ثابت مقدار توصیف

32

Page 33: مروری بر کلاسهای Qt

:QCharکلس

QChar::Mark_NonSpacing 1 Mnکلس یونی کدی برای نام

QChar::Mark_SpacingCombining 2 Mcکلس یونی کدی برای نام

QChar::Mark_Enclosing 3 Meکلس یونی کدی برای نام

QChar::Number_DecimalDigit 4 Ndکلس یونی کدی برای نام

QChar::Number_Letter 5 N1کلس یونی کدی برای نام

QChar::Number_Other 6 Noکلس یونی کدی برای نام

QChar::Separator_Space 7 Zsکلس یونی کدی برای نام

QChar::Separator_Line 8 Z1کلس یونی کدی برای نام

QChar::Separator_Paragraph 9 Zpکلس یونی کدی برای نام

QChar::Other_Control 10 Ccکلس یونی کدی برای نام

QChar::Other_Format 11 Cfکلس یونی کدی برای نام

QChar::Other_Surrogate 12 Csکلس یونی کدی برای نام

QChar::Other_PrivateUse 13 Coکلس یونی کدی برای نام

QChar::Other_NotAssigned 14 Cnکلس یونی کدی برای نام

ثابت مقدار توصیفQChar::Letter_Uppercase 15 Luکلس یونی کدی برای نام

QChar::Letter_Lowercase 16 L1کلس یونی کدی برای نام

QChar::Letter_Titlecase 17 Ltکلس یونی کدی برای نام

QChar::Letter_Modifier 18 Lmکلس یونی کدی برای نام

QChar::Letter_Other 19 Loکلس یونی کدی برای نام

QChar::Punctuation_Connector 20 Pcکلس یونی کدی برای نام

QChar::Punctuation_Dash 21 Pdکلس یونی کدی برای نام

QChar::Punctuation_Open 22 Psکلس یونی کدی برای نام

QChar::Punctuation_Close 23 Peکلس یونی کدی برای نام

33

Page 34: مروری بر کلاسهای Qt

:QCharکلس

QChar::Punctuation_InitialQuote 24 Piکلس یونی کدی برای نام

QChar::Punctuation_FinalQuote 25 Pfکلس یونی کدی برای نام

QChar::Punctuation_Other 26 Poکلس یونی کدی برای نام

QChar::Symbol_Math 27 Smکلس یونی کدی برای نام

QChar::Symbol_Currency 28 Scکلس یونی کدی برای نام

QChar::Symbol_Modifier 29 Skکلس یونی کدی برای نام

Qchar::Symbol_Other 30 Soکلس یونی کدی برای نام

QChar::NoCategory 0 Qt.نمیتواند برای این مقطع کارکتری پیدا کند

enum QChar::Decomposition

صفات تجزیهای یونیکد را تعریف میکند.enumاین

مقدار ثابتQChar::NoDecomposition 0

QChar::Canonical 1

QChar::Circle 8

QChar::Compat 16

QChar::Final 6

QChar::Font 2

QChar::Fraction 17

QChar::Initial 4

QChar::Isolated 7

QChar::Medial 5

34

Page 35: مروری بر کلاسهای Qt

:QCharکلس

QChar::Narrow 13

QChar::NoBreak 3

QChar::Small 14

QChar::Square 15

QChar::Sub 10

QChar::Super 9

QChar::Vertical 11

QChar::Wide 12

enum QChar::Direction

دارد.direction در نام ثابتها اشاره به Dir صفاتی را برای جهت یونیکد تعریف میکند.کلمه enumاین

Constant Value

QChar::DirAL 13

QChar::DirAN 5

QChar::DirB 7

QChar::DirBN 18

QChar::DirCS 6

QChar::DirEN 2

QChar::DirES 3

QChar::DirET 4

QChar::DirL 0

QChar::DirLRE 11

QChar::DirLRO 12

QChar::DirNSM 17

35

Page 36: مروری بر کلاسهای Qt

:QCharکلس

QChar::DirON 10

QChar::DirPDF 16

QChar::DirR 1

QChar::DirRLE 14

QChar::DirRLO 15

QChar::DirS 8

QChar::DirWS 9

enum QChar::Joining

صفاتی را برای چسبیدن کارکترها تعریف میکند.enumاین

ثابت مقدارQChar::Center 3

QChar::Dual 1

QChar::OtherJoining 0

QChar::Right 2

enum Qchar::SpecialCharacter

یکسری کارکترهای ویژه تعریف میکند.enumاین

مقدار ثابتQChar::Null 0x0000

QChar::Nbsp 0x00a0

QChar::ReplacementCharacter 0xfffd

QChar::ObjectReplacementCharacter 0xfffc

QChar::ByteOrderMark 0xfeff

QChar::ByteOrderSwapped 0xfffe

36

Page 37: مروری بر کلاسهای Qt

:QCharکلس

QChar::ParagraphSeparator 0x2029

QChar::LineSeparator 0x2028

enum QChar::UnicodeVersion

نسخه یونیکد را مشخص میکند.enumاین

ثابت مقدار شماره نسخه

QChar::Unicode_1_1 1 ۱.۱نسخه

QChar::Unicode_2_0 2 ۱.۲نسخه

QChar::Unicode_2_1_2 3 ۲.۱.۲نسخه

QChar::Unicode_3_0 4 ۳.۰نسخه

QChar::Unicode_3_1 5 ۳.۱نسخه

QChar::Unicode_3_2 6 ۳.۲نسخه

QChar::Unicode_4_0 7 ۴.۰نسخه

QChar::Unicode_Unassigned 0 نسبت داده نمیشود.۴این مقدار به هیچ کارکتری در نسخه

37

Page 38: مروری بر کلاسهای Qt

:QCharکلس

توابع عمومی :• QChar ()

• QChar ( char ch )

• QChar ( uchar ch )

• QChar ( QLatin1Char ch )

• QChar ( uchar cell, uchar row )

• QChar ( ushort code )

• QChar ( short code )

• QChar ( uint code )

• QChar ( int code )

• QChar ( SpecialCharacter ch )

• Category category () const

• uchar cell () const

• unsigned char combiningClass () const

• QString decomposition () const

• Decomposition decompositionTag () const

• int digitValue () const

• Direction direction () const

• bool hasMirrored () const

• bool isDigit () const

• bool isLetter () const

• bool isLetterOrNumber () const

• bool isLower () const

• bool isMark () const

38

Page 39: مروری بر کلاسهای Qt

:QCharکلس

• bool isNull () const

• bool isNumber () const

• bool isPrint () const

• bool isPunct () const

• bool isSpace () const

• bool isSymbol () const

• bool isUpper () const

• Joining joining () const (preliminary)

• QChar mirroredChar () const

• uchar row () const

• const char toAscii () const

• const char toLatin1 () const

• QChar toLower () const

• QChar toUpper () const

• ushort & unicode ()

• const ushort unicode () const

• UnicodeVersion unicodeVersion () const

:staticتوابع • QChar fromAscii ( char c )

• QChar fromLatin1 ( char c )

توابع مربوطه غیر عضو :• bool operator!= ( QChar c1, QChar c2 )

• bool operator< ( QChar c1, QChar c2 )

• QDataStream & operator<< ( QDataStream & out, const QChar & chr )

39

Page 40: مروری بر کلاسهای Qt

:QCharکلس

• bool operator<= ( QChar c1, QChar c2 )

• bool operator== ( QChar c1, QChar c2 )

• bool operator> ( QChar c1, QChar c2 )

• bool operator>= ( QChar c1, QChar c2 )

• QDataStream & operator>> ( QDataStream & in, QChar & chr )

کامل میشود و با فهمیدن آن است که میشود بر روی مثال کارکرد.QStringاین کلس با کلس

40

Page 41: مروری بر کلاسهای Qt

:QStringکلس

:QStringکلس

توصیف کلس:این کلس یک رشته کارکتری را فراهم میکند و بر روی آن کار میکند.

QString یک رشته از QChar ها را ذخیره میکند.با توجه به کلسهای دیگری که Qtبرای رشتهها دارد, بهترین حالت استفاده , استفاده UTF-16 برای QChar موجود میباشد.(فراموش نشود که QByteArray به نام UTF-8 میباشد.حتی کلسی برای QStringاز کلس میباشد.)

یکی از راههای ساده برای ذخیره یک رشته در زیر آمده است:

QString str= hello ;” ”

QString * نوع const char رابا استفاده از تابع fromAscii.به یونیکد تبدیل میکند

ی ترجمه میشودC-Style به عنوان همان const char میباشد. * const char , پارامترها همان * QStringدر تمام روشهای استفاده از \' میباشد.0که در آخر هر رشته یک '

استفاده کنید:QStringشما به صورت زیر هم می توانید از

static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };QString str(data, 4);

QString یک کپی عمیق از اطلعات QChar میسازد.حتی بدون اینکه شما تجربه کار با QCharرا داشته باشید.به مثالهای زیر دقت کنید:

QString str;str.resize(4);str[0] = QChar('U');str[1] = QChar('n');str[2] = QChar(0x10e3);str[3] = Qchar(0x03a3);

کارکتر تغییر اندازه دادیم و هر یک از خانههای آن رشته را با یک کارکتر پر کردیم.۴در مثال بال یک رشته را به

for (int i = 0; i < str.size(); ++i) { if (str.at(i) >= QChar('a') && str.at(i) <= QChar('f')) qDebug() << "Found character in range [a-f]";}

41

Page 42: مروری بر کلاسهای Qt

:QStringکلس

میگیرد و کارکتر همانinteger یک پارامتر از نوع at چاپ میشوند.البته بدین شرط که داخل حلقه باشند.تابع f تا aدر مثال بال حروف شماره خانه رشته را برمیگرداند.

QString str = "and";str.prepend("rock "); // str == "rock and"str.append(" roll"); // str == "rock and roll"str.replace(5, 3, "&"); // str == "rock & roll”

میتوانیم به قبل از رشته چیزی بچسبانیم.و باpreappend میباشد را ایجاد کردیم.با تابع andدر خطوط بال یک رشته که محتویات آن به آن میگوییم که از کارکتر چندم و به اندازه چند کارکتر حذف و چه رشته در آنجا قرار گیرد.replace به آخر آن.اما با تابع appendتابع

در این کلس تمام عملگر ها بازنویسی شدهاند و برروی یک رشته کار میکنند.

رجوع کنید!۱برای فارسی نویسی به ضمیمه شماره نکته :

انواع عمومی :• class Null

• enum NormalizationForm { NormalizationForm_D, NormalizationForm_C, NormalizationForm_KD, NormalizationForm_KC }

• enum SectionFlag { SectionDefault, SectionSkipEmpty, SectionIncludeLeadingSep, SectionIncludeTrailingSep, SectionCaseInsensitiveSeps }

• flags SectionFlags

• enum SplitBehavior { KeepEmptyParts, SkipEmptyParts }

توابع عمومی :• QString ()

• QString ( const QChar * unicode, int size )

• QString ( QChar ch )

• QString ( int size, QChar ch )

• QString ( const QLatin1String & str )

42

Page 43: مروری بر کلاسهای Qt

:QStringکلس

• QString ( const QString & other )

• QString ( const char * str )

• QString ( const QByteArray & ba )

• ~QString ()

• QString & append ( const QString & str )

• QString & append ( const QLatin1String & str )

• QString & append ( const QByteArray & ba )

• QString & append ( const char * str )

• QString & append ( QChar ch )

• QString arg ( const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( const QString & a1, const QString & a2 ) const

• QString arg ( const QString & a1, const QString & a2, const QString & a3 ) const

• QString arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4 ) const

• QString arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( uint a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( long a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( ulong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( qlonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( qulonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( short a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( ushort a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( QChar a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( char a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• QString arg ( double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, const QChar & fillChar = QLatin1Char( ' ' ) ) const

• const QChar at ( int i ) const

43

Page 44: مروری بر کلاسهای Qt

:QStringکلس

• int capacity () const

• void chop ( int n )

• void clear ()

• int compare ( const QString & other ) const

• const QChar * constData () const

• bool contains ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• bool contains ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• bool contains ( const QRegExp & rx ) const

• int count ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• int count ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• int count ( const QRegExp & rx ) const

• int count () const

• QChar * data ()

• const QChar * data () const

• bool endsWith ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• bool endsWith ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• bool endsWith ( const QChar & c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• QString & fill ( QChar ch, int size = -1 )

• int indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• int indexOf ( QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• int indexOf ( const QRegExp & rx, int from = 0 ) const

• QString & insert ( int i, const QString & str )

• QString & insert ( int i, const QLatin1String & str )

• QString & insert ( int i, const QChar * unicode, int size )

• QString & insert ( int i, QChar ch )

44

Page 45: مروری بر کلاسهای Qt

:QStringکلس

• bool isEmpty () const

• bool isNull () const

• int lastIndexOf ( const QString & str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• int lastIndexOf ( QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• int lastIndexOf ( const QRegExp & rx, int from = -1 ) const

• QString left ( int len ) const

• QString leftJustified ( int width, QChar fill = QLatin1Char( ' ' ), bool truncate = false ) const

• int length () const

• int localeAwareCompare ( const QString & other ) const

• QString mid ( int i, int len = -1 ) const

• QString normalized ( NormalizationForm form ) const

• QString normalized ( NormalizationForm form, QChar::UnicodeVersion version ) const

• QString & prepend ( const QString & str )

• QString & prepend ( const QLatin1String & str )

• QString & prepend ( const QByteArray & ba )

• QString & prepend ( const char * str )

• QString & prepend ( QChar ch )

• void push_back ( const QString & other )

• void push_back ( QChar ch )

• void push_front ( const QString & other )

• void push_front ( QChar ch )

• QString & remove ( int pos, int len )

• QString & remove ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive )

• QString & remove ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive )

• QString & remove ( const QRegExp & rx )

45

Page 46: مروری بر کلاسهای Qt

:QStringکلس

• QString & replace ( int pos, int len, const QString & after )

• QString & replace ( int pos, int len, const QChar * unicode, int size )

• QString & replace ( int pos, int len, QChar after )

• QString & replace ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

• QString & replace ( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

• QString & replace ( QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

• QString & replace ( const QRegExp & rx, const QString & after )

• void reserve ( int size )

• void resize ( int size )

• QString right ( int len ) const

• QString rightJustified ( int width, QChar fill = QLatin1Char( ' ' ), bool truncate = false ) const

• QString section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

• QString section ( const QString & sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

• QString section ( const QRegExp & reg, int start, int end = -1, SectionFlags flags = SectionDefault ) const

• QString & setNum ( int n, int base = 10 )

• QString & setNum ( uint n, int base = 10 )

• QString & setNum ( long n, int base = 10 )

• QString & setNum ( ulong n, int base = 10 )

• QString & setNum ( qlonglong n, int base = 10 )

• QString & setNum ( qulonglong n, int base = 10 )

• QString & setNum ( short n, int base = 10 )

• QString & setNum ( ushort n, int base = 10 )

• QString & setNum ( double n, char f = 'g', int prec = 6 )

• QString & setNum ( float n, char f = 'g', int prec = 6 )

• QString & setUnicode ( const QChar * unicode, int size )

46

Page 47: مروری بر کلاسهای Qt

:QStringکلس

• QString & setUtf16 ( const ushort * unicode, int size )

• QString simplified () const

• int size () const

• QStringList split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• QStringList split ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• QStringList split ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) const

• QString & sprintf ( const char * cformat, ... )

• void squeeze ()

• bool startsWith ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• bool startsWith ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• bool startsWith ( const QChar & c, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• QByteArray toAscii () const

• double toDouble ( bool * ok = 0 ) const

• float toFloat ( bool * ok = 0 ) const

• int toInt ( bool * ok = 0, int base = 10 ) const

• QByteArray toLatin1 () const

• QByteArray toLocal8Bit () const

• long toLong ( bool * ok = 0, int base = 10 ) const

• qlonglong toLongLong ( bool * ok = 0, int base = 10 ) const

• QString toLower () const

• short toShort ( bool * ok = 0, int base = 10 ) const

• std::string toStdString () const

• std::wstring toStdWString () const

• uint toUInt ( bool * ok = 0, int base = 10 ) const

47

Page 48: مروری بر کلاسهای Qt

:QStringکلس

• ulong toULong ( bool * ok = 0, int base = 10 ) const

• qulonglong toULongLong ( bool * ok = 0, int base = 10 ) const

• ushort toUShort ( bool * ok = 0, int base = 10 ) const

• QString toUpper () const

• QByteArray toUtf8 () const

• QString trimmed () const

• void truncate ( int pos )

• const QChar * unicode () const

• const ushort * utf16 () const

• QString & vsprintf ( const char * cformat, va_list ap )

• bool operator!= ( const QString & other ) const

• bool operator!= ( const QLatin1String & other ) const

• bool operator!= ( const QByteArray & other ) const

• bool operator!= ( const char * other ) const

• QString & operator+= ( const QString & other )

• QString & operator+= ( const QLatin1String & str )

• QString & operator+= ( const QByteArray & ba )

• QString & operator+= ( const char * str )

• QString & operator+= ( char ch )

• QString & operator+= ( QChar ch )

• bool operator< ( const QString & other ) const

• bool operator< ( const QLatin1String & other ) const

• bool operator< ( const QByteArray & other ) const

• bool operator< ( const char * other ) const

• bool operator<= ( const QString & other ) const

48

Page 49: مروری بر کلاسهای Qt

:QStringکلس

• bool operator<= ( const QLatin1String & other ) const

• bool operator<= ( const QByteArray & other ) const

• bool operator<= ( const char * other ) const

• QString & operator= ( const QString & other )

• QString & operator= ( const QLatin1String & str )

• QString & operator= ( const QByteArray & ba )

• QString & operator= ( const char * str )

• QString & operator= ( char ch )

• QString & operator= ( QChar ch )

• bool operator== ( const QString & other ) const

• bool operator== ( const QLatin1String & other ) const

• bool operator== ( const QByteArray & other ) const

• bool operator== ( const char * other ) const

• bool operator> ( const QString & other ) const

• bool operator> ( const QLatin1String & other ) const

• bool operator> ( const QByteArray & other ) const

• bool operator> ( const char * other ) const

• bool operator>= ( const QString & other ) const

• bool operator>= ( const QLatin1String & other ) const

• bool operator>= ( const QByteArray & other ) const

• bool operator>= ( const char * other ) const

• QCharRef operator[] ( int i )

• const QChar operator[] ( int i ) const

• QCharRef operator[] ( uint i )

• const QChar operator[] ( uint i ) const

49

Page 50: مروری بر کلاسهای Qt

:QStringکلس

:staticتوابع عضو • int compare ( const QString & s1, const QString & s2 )

• QString fromAscii ( const char * str, int size = -1 )

• QString fromLatin1 ( const char * str, int size = -1 )

• QString fromLocal8Bit ( const char * str, int size = -1 )

• QString fromRawData ( const QChar * unicode, int size )

• QString fromStdString ( const std::string & str )

• QString fromStdWString ( const std::wstring & str )

• QString fromUtf8 ( const char * str, int size = -1 )

• QString fromUtf16 ( const ushort * unicode, int size = -1 )

• int localeAwareCompare ( const QString & s1, const QString & s2 )

• QString number ( long n, int base = 10 )

• QString number ( ulong n, int base = 10 )

• QString number ( int n, int base = 10 )

• QString number ( uint n, int base = 10 )

• QString number ( qlonglong n, int base = 10 )

• QString number ( qulonglong n, int base = 10 )

• QString number ( double n, char f = 'g', int prec = 6 )

توابع و عملگر های مربوطه غیر عضو :• bool operator!= ( const char * s1, const QString & s2 )

• const QString operator+ ( const QString & s1, const QString & s2 )

• const QString operator+ ( const QString & s1, const char * s2 )

• const QString operator+ ( const char * s1, const QString & s2 )

• const QString operator+ ( const QString & s, char ch )

• const QString operator+ ( char ch, const QString & s )

50

Page 51: مروری بر کلاسهای Qt

:QStringکلس

• bool operator< ( const char * s1, const QString & s2 )

• QDataStream & operator<< ( QDataStream & out, const QString & str )

• bool operator<= ( const char * s1, const QString & s2 )

• bool operator== ( const char * s1, const QString & s2 )

• bool operator> ( const char * s1, const QString & s2 )

• bool operator>= ( const char * s1, const QString & s2 )

• QDataStream & operator>> ( QDataStream & in, QString & str)

51

Page 52: مروری بر کلاسهای Qt

:QStringListکلس

:QStringListکلس

توصیف کلس : QStirng ها بود و کلس حاظر مجموعی از QChar مجموعی از QStringاگر به یاد داشته باشید,کلس

ها را برای شما فراهم میکند.

استفاده کنید.QList به ارث گرفته میشود.شما میتوانید از تمام توابع QList <QStringاین کلس از <

به برنامه زیر دقت کنید :

QStringList fonts;fonts << "Arial" << "Helvetica" << "Times" << "Courier";

for (int i = 0; i < fonts.size(); ++i) cout << fonts.at(i).ascii() << endl;

) چاپ میکند.utf (نه asciiبرنامه بال یک لیست از چهار رشتهای که هر یک نام فونتی هستند, را ایجاد میکند و سپس آنها را به صورت

iterator هایJava-Style:

QStringListIterator i(fonts);

while (i.hasNext())

cout << i.next().ascii() << endl;

iterator هایSTL-Style:

QStringList::const_iterator i;

for (i = fonts.constBegin(); i != fonts.constEnd(); ++i)

cout << (*i).ascii() << endl;

52

Page 53: مروری بر کلاسهای Qt

:QStringListکلس

توابع عمومی :• QStringList ()

• QStringList ( const QString & str )

• QStringList ( const QStringList & other )

• QStringList ( const QList<QString> & other )

• bool contains ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• QStringList filter ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

• QStringList filter ( const QRegExp & rx ) const

• int indexOf ( const QRegExp & rx, int from = 0 ) const

• QString join ( const QString & sep ) const

• int lastIndexOf ( const QRegExp & rx, int from = -1 ) const

• QStringList & replaceInStrings ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

• QStringList & replaceInStrings ( const QRegExp & rx, const QString & after )

• void sort ()

• QStringList operator+ ( const QStringList & other ) const

• QStringList & operator<< ( const QString & str )

• QStringList & operator<< ( const QStringList & other )

به ارث گرفته میشوند.QList عدد تابع از ۶•

توابع مربوطه غیر عضو :• typedef QMutableStringListIterator

• typedef QStringListIterator

• QDataStream & operator<< ( QDataStream & out, const QStringList & list )

53

Page 54: مروری بر کلاسهای Qt

:QStringListکلس

• QDataStream & operator>> ( QDataStream & in, QStringList & list )

54

Page 55: مروری بر کلاسهای Qt

:QLocaleکلس

:QLocaleکلس

توصیف کلس:این کلس اعداد و دیگر رشتهها را در زبانهای مختلف به هم تبدیل میکند.

به سازنده آن بارگذاری میکنند.و اغلب از توابع تبدیل رشته به عدد و عدد به رشته شبیهlanguage/countryاین کلس را با ارسال جفت QString.استفاده میکند

به مثال زیر توجه کنید :

1 QLocale egyptian(QLocale::Arabic, QLocale::Egypt);2 QString s1 = egyptian.toString(1.571429E+07, 'e');3 QString s2 = egyptian.toString(10);4 double d = egyptian.toDouble(s1);5 int i = egyptian.toInt(s2);

به آنsetDefault هر برنامه یک سری پیشفرض برای بومی سازی وجود دارد.که شما نمیتوانید آنها را تغییر داده و با تابع startupدر برنامه بگذارد.startupبگویید که تغییرات را در

ببینید که این بدان معناست که شما ازC را LANG متغیرهای محیطی را ببینید ممکن است مقدار متغیر envاگر با دستور نکته : English/UnitedState.استفاده میکنید

وجود دارد.Persian/Iranبرای فارسی مقدار

را بیان میکند:QLocaleتکه کد زیر چگونگی کامل کلس

55

Page 56: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::setDefault(QLocale::Persian, QLocale::Iran);QLocale Persian; // Constructs a default QLocaleQString s1 = Persian.toString(15714.3, 'e');

bool ok;double d;

QLocale::setDefault(QLocale::C);d = QString("1234,56").toDouble(&ok); // ok == falsed = QString("1234.56").toDouble(&ok); // ok == true, d == 1234.56

QLocale::setDefault(QLocale::German);d = QString("1234,56").toDouble(&ok); // ok == true, d == 1234.56d = QString("1234.56").toDouble(&ok); // ok == true, d == 1234.56

QLocale::setDefault(QLocale::English, QLocale::UnitedStates);str = QString("%1 %L2 %L3").arg(12345).arg(12345).arg(12345, 0, 16);// str == "12345 12,345 3039 ;”

و بر عکس توسط مجوز زیرپوشش داده شد:doubleتوابع تبدیل رشته به

Copyright (c) 1991 by AT&T.

انواع عمومی :

• enum Country { AnyCountry, Afghanistan, Albania, Algeria, ..., Zimbabwe }

• enum FormatType { LongFormat, ShortFormat }

• enum Language { C, Abkhazian, Afan, Afar, ..., Zulu }

enum QLocale::Country : برای یک کشور خاص استفاده میشود:enumاین

56

Page 57: مروری بر کلاسهای Qt

:QLocaleکلس

مقدار ثابتQLocale::AnyCountry 0

QLocale::Afghanistan 1

QLocale::Albania 2

QLocale::Algeria 3

QLocale::AmericanSamoa 4

QLocale::Andorra 5

QLocale::Angola 6

QLocale::Anguilla 7

QLocale::Antarctica 8

QLocale::AntiguaAndBarbuda 9

QLocale::Argentina 10

QLocale::Armenia 11

QLocale::Aruba 12

QLocale::Australia 13

QLocale::Austria 14

QLocale::Azerbaijan 15

QLocale::Bahamas 16

QLocale::Bahrain 17

QLocale::Bangladesh 18

QLocale::Barbados 19

QLocale::Belarus 20

QLocale::Belgium 21

QLocale::Belize 22

QLocale::Benin 23

QLocale::Bermuda 24

57

Page 58: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Bhutan 25

QLocale::Bolivia 26

QLocale::BosniaAndHerzegowina 27

QLocale::Botswana 28

QLocale::BouvetIsland 29

QLocale::Brazil 30

QLocale::BritishIndianOceanTerritory 31

QLocale::BruneiDarussalam 32

QLocale::Bulgaria 33

QLocale::BurkinaFaso 34

QLocale::Burundi 35

QLocale::Cambodia 36

QLocale::Cameroon 37

QLocale::Canada 38

QLocale::CapeVerde 39

QLocale::CaymanIslands 40

QLocale::CentralAfricanRepublic 41

QLocale::Chad 42

QLocale::Chile 43

QLocale::China 44

QLocale::ChristmasIsland 45

QLocale::CocosIslands 46

QLocale::Colombia 47

QLocale::Comoros 48

QLocale::DemocraticRepublicOfCongo 49

QLocale::PeoplesRepublicOfCongo 50

58

Page 59: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::CookIslands 51

QLocale::CostaRica 52

QLocale::IvoryCoast 53

QLocale::Croatia 54

QLocale::Cuba 55

QLocale::Cyprus 56

QLocale::CzechRepublic 57

QLocale::Denmark 58

QLocale::Djibouti 59

QLocale::Dominica 60

QLocale::DominicanRepublic 61

QLocale::EastTimor 62

QLocale::Ecuador 63

QLocale::Egypt 64

QLocale::ElSalvador 65

QLocale::EquatorialGuinea 66

QLocale::Eritrea 67

QLocale::Estonia 68

QLocale::Ethiopia 69

QLocale::FalklandIslands 70

QLocale::FaroeIslands 71

QLocale::FijiCountry 72

QLocale::Finland 73

QLocale::France 74

QLocale::MetropolitanFrance 75

QLocale::FrenchGuiana 76

59

Page 60: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::FrenchPolynesia 77

QLocale::FrenchSouthernTerritories 78

QLocale::Gabon 79

QLocale::Gambia 80

QLocale::Georgia 81

QLocale::Germany 82

QLocale::Ghana 83

QLocale::Gibraltar 84

QLocale::Greece 85

QLocale::Greenland 86

QLocale::Grenada 87

QLocale::Guadeloupe 88

QLocale::Guam 89

QLocale::Guatemala 90

QLocale::Guinea 91

QLocale::GuineaBissau 92

QLocale::Guyana 93

QLocale::Haiti 94

QLocale::HeardAndMcDonaldIslands 95

QLocale::Honduras 96

QLocale::HongKong 97

QLocale::Hungary 98

QLocale::Iceland 99

QLocale::India 100

QLocale::Indonesia 101

QLocale::Iran 102

60

Page 61: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Iraq 103

QLocale::Ireland 104

QLocale::Israel 105

QLocale::Italy 106

QLocale::Jamaica 107

QLocale::Japan 108

QLocale::Jordan 109

QLocale::Kazakhstan 110

QLocale::Kenya 111

QLocale::Kiribati 112

QLocale::DemocraticRepublicOfKorea 113

QLocale::RepublicOfKorea 114

QLocale::Kuwait 115

QLocale::Kyrgyzstan 116

QLocale::Lao 117

QLocale::Latvia 118

QLocale::Lebanon 119

QLocale::Lesotho 120

QLocale::Liberia 121

QLocale::LibyanArabJamahiriya 122

QLocale::Liechtenstein 123

QLocale::Lithuania 124

QLocale::Luxembourg 125

QLocale::Macau 126

QLocale::Macedonia 127

QLocale::Madagascar 128

61

Page 62: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Malawi 129

QLocale::Malaysia 130

QLocale::Maldives 131

QLocale::Mali 132

QLocale::Malta 133

QLocale::MarshallIslands 134

QLocale::Martinique 135

QLocale::Mauritania 136

QLocale::Mauritius 137

QLocale::Mayotte 138

QLocale::Mexico 139

QLocale::Micronesia 140

QLocale::Moldova 141

QLocale::Monaco 142

QLocale::Mongolia 143

QLocale::Montserrat 144

QLocale::Morocco 145

QLocale::Mozambique 146

QLocale::Myanmar 147

QLocale::Namibia 148

QLocale::NauruCountry 149

QLocale::Nepal 150

QLocale::Netherlands 151

QLocale::NetherlandsAntilles 152

QLocale::NewCaledonia 153

QLocale::NewZealand 154

62

Page 63: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Nicaragua 155

QLocale::Niger 156

QLocale::Nigeria 157

QLocale::Niue 158

QLocale::NorfolkIsland 159

QLocale::NorthernMarianaIslands 160

QLocale::Norway 161

QLocale::Oman 162

QLocale::Pakistan 163

QLocale::Palau 164

QLocale::PalestinianTerritory 165

QLocale::Panama 166

QLocale::PapuaNewGuinea 167

QLocale::Paraguay 168

QLocale::Peru 169

QLocale::Philippines 170

QLocale::Pitcairn 171

QLocale::Poland 172

QLocale::Portugal 173

QLocale::PuertoRico 174

QLocale::Qatar 175

QLocale::Reunion 176

QLocale::Romania 177

QLocale::RussianFederation 178

QLocale::Rwanda 179

QLocale::SaintKittsAndNevis 180

63

Page 64: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::StLucia 181

QLocale::StVincentAndTheGrenadines 182

QLocale::Samoa 183

QLocale::SanMarino 184

QLocale::SaoTomeAndPrincipe 185

QLocale::SaudiArabia 186

QLocale::Senegal 187

QLocale::SerbiaAndMontenegro 241

QLocale::Seychelles 188

QLocale::SierraLeone 189

QLocale::Singapore 190

QLocale::Slovakia 191

QLocale::Slovenia 192

QLocale::SolomonIslands 193

QLocale::Somalia 194

QLocale::SouthAfrica 195

QLocale::SouthGeorgiaAndTheSouthSandwichIslands 196

QLocale::Spain 197

QLocale::SriLanka 198

QLocale::StHelena 199

QLocale::StPierreAndMiquelon 200

QLocale::Sudan 201

QLocale::Suriname 202

QLocale::SvalbardAndJanMayenIslands 203

QLocale::Swaziland 204

QLocale::Sweden 205

64

Page 65: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Switzerland 206

QLocale::SyrianArabRepublic 207

QLocale::Taiwan 208

QLocale::Tajikistan 209

QLocale::Tanzania 210

QLocale::Thailand 211

QLocale::Togo 212

QLocale::Tokelau 213

QLocale::TongaCountry 214

QLocale::TrinidadAndTobago 215

QLocale::Tunisia 216

QLocale::Turkey 217

QLocale::Turkmenistan 218

QLocale::TurksAndCaicosIslands 219

QLocale::Tuvalu 220

QLocale::Uganda 221

QLocale::Ukraine 222

QLocale::UnitedArabEmirates 223

QLocale::UnitedKingdom 224

QLocale::UnitedStates 225

QLocale::UnitedStatesMinorOutlyingIslands 226

QLocale::Uruguay 227

QLocale::Uzbekistan 228

QLocale::Vanuatu 229

QLocale::VaticanCityState 230

QLocale::Venezuela 231

65

Page 66: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::VietNam 232

QLocale::BritishVirginIslands 233

QLocale::USVirginIslands 234

QLocale::WallisAndFutunaIslands 235

QLocale::WesternSahara 236

QLocale::Yemen 237

QLocale::Yugoslavia 238

QLocale::Zambia 239

QLocale::Zimbabwe 240

enum QLocale::FormatType : به رشته تبدیل شوند توصیف میکند.Qtime و Qdate نوع فرمتهایی را که میتوانند استفاده شوند برای تبدیل اشیا enumاین

مقدار ثابتQLocale::LongFormat 0

QLocale::ShortFormat 1

enum QLocale::Language : برای زبانهای مشخص استفاده میشود.enumاین

مقدار ثابتQLocale::C 1

QLocale::Abkhazian 2

QLocale::Afan 3

QLocale::Afar 4

66

Page 67: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Afrikaans 5

QLocale::Albanian 6

QLocale::Amharic 7

QLocale::Arabic 8

QLocale::Armenian 9

QLocale::Assamese 10

QLocale::Aymara 11

QLocale::Azerbaijani 12

QLocale::Bashkir 13

QLocale::Basque 14

QLocale::Bengali 15

QLocale::Bhutani 16

QLocale::Bihari 17

QLocale::Bislama 18

QLocale::Bosnian 142

QLocale::Breton 19

QLocale::Bulgarian 20

QLocale::Burmese 21

QLocale::Byelorussian 22

QLocale::Cambodian 23

QLocale::Catalan 24

QLocale::Chinese 25

QLocale::Cornish 145

QLocale::Corsican 26

QLocale::Croatian 27

QLocale::Czech 28

67

Page 68: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Danish 29

QLocale::Divehi 143

QLocale::Dutch 30

QLocale::English 31

QLocale::Esperanto 32

QLocale::Estonian 33

QLocale::Faroese 34

QLocale::FijiLanguage 35

QLocale::Finnish 36

QLocale::French 37

QLocale::Frisian 38

QLocale::Gaelic 39

QLocale::Galician 40

QLocale::Georgian 41

QLocale::German 42

QLocale::Greek 43

QLocale::Greenlandic 44

QLocale::Guarani 45

QLocale::Gujarati 46

QLocale::Hausa 47

QLocale::Hebrew 48

QLocale::Hindi 49

QLocale::Hungarian 50

QLocale::Icelandic 51

QLocale::Indonesian 52

QLocale::Interlingua 53

68

Page 69: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Interlingue 54

QLocale::Inuktitut 55

QLocale::Inupiak 56

QLocale::Irish 57

QLocale::Italian 58

QLocale::Japanese 59

QLocale::Javanese 60

QLocale::Kannada 61

QLocale::Kashmiri 62

QLocale::Kazakh 63

QLocale::Kinyarwanda 64

QLocale::Kirghiz 65

QLocale::Korean 66

QLocale::Kurdish 67

QLocale::Kurundi 68

QLocale::Laothian 69

QLocale::Latin 70

QLocale::Latvian 71

QLocale::Lingala 72

QLocale::Lithuanian 73

QLocale::Macedonian 74

QLocale::Malagasy 75

QLocale::Malay 76

QLocale::Malayalam 77

QLocale::Maltese 78

QLocale::Manx 144

69

Page 70: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Maori 79

QLocale::Marathi 80

QLocale::Moldavian 81

QLocale::Mongolian 82

QLocale::NauruLanguage 83

QLocale::Nepali 84

QLocale::Norwegian 85

QLocale::Nynorsk 141

QLocale::Occitan 86

QLocale::Oriya 87

QLocale::Pashto 88

QLocale::Persian 89

QLocale::Polish 90

QLocale::Portuguese 91

QLocale::Punjabi 92

QLocale::Quechua 93

QLocale::RhaetoRomance 94

QLocale::Romanian 95

QLocale::Russian 96

QLocale::Samoan 97

QLocale::Sangho 98

QLocale::Sanskrit 99

QLocale::Serbian 100

QLocale::SerboCroatian 101

QLocale::Sesotho 102

QLocale::Setswana 103

70

Page 71: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Shona 104

QLocale::Sindhi 105

QLocale::Singhalese 106

QLocale::Siswati 107

QLocale::Slovak 108

QLocale::Slovenian 109

QLocale::Somali 110

QLocale::Spanish 111

QLocale::Sundanese 112

QLocale::Swahili 113

QLocale::Swedish 114

QLocale::Tagalog 115

QLocale::Tajik 116

QLocale::Tamil 117

QLocale::Tatar 118

QLocale::Telugu 119

QLocale::Thai 120

QLocale::Tibetan 121

QLocale::Tigrinya 122

QLocale::TongaLanguage 123

QLocale::Tsonga 124

QLocale::Turkish 125

QLocale::Turkmen 126

QLocale::Twi 127

QLocale::Uigur 128

QLocale::Ukrainian 129

71

Page 72: مروری بر کلاسهای Qt

:QLocaleکلس

QLocale::Urdu 130

QLocale::Uzbek 131

QLocale::Vietnamese 132

QLocale::Volapuk 133

QLocale::Welsh 134

QLocale::Wolof 135

QLocale::Xhosa 136

QLocale::Yiddish 137

QLocale::Yoruba 138

QLocale::Zhuang 139

QLocale::Zulu 140

72

Page 73: مروری بر کلاسهای Qt

:QLocaleکلس

توابع عمومی :• QLocale ()

• QLocale ( const QString & name )

• QLocale ( Language language, Country country = AnyCountry )

• QLocale ( const QLocale & other )

• Country country () const

• QString dateFormat ( FormatType format = LongFormat ) const

• QChar decimalPoint () const

• QChar exponential () const

• QChar groupSeparator () const

• Language language () const

• QString name () const

• QChar negativeSign () const

• QChar percent () const

• QString timeFormat ( FormatType format = LongFormat ) const

• double toDouble ( const QString & s, bool * ok = 0 ) const

• float toFloat ( const QString & s, bool * ok = 0 ) const

• int toInt ( const QString & s, bool * ok = 0, int base = 0 ) const

• qlonglong toLongLong ( const QString & s, bool * ok = 0, int base = 0 ) const

• short toShort ( const QString & s, bool * ok = 0, int base = 0 ) const

• QString toString ( qlonglong i ) const

• QString toString ( const QDate & date, const QString & format ) const

• QString toString ( const QDate & date, FormatType format = LongFormat ) const

• QString toString ( const QTime & time, const QString & format ) const

73

Page 74: مروری بر کلاسهای Qt

:QLocaleکلس

• QString toString ( const QTime & time, FormatType format = LongFormat ) const

• QString toString ( qulonglong i ) const

• QString toString ( double i, char f = 'g', int prec = 6 ) const

• QString toString ( short i ) const

• QString toString ( ushort i ) const

• QString toString ( int i ) const

• QString toString ( uint i ) const

• QString toString ( float i, char f = 'g', int prec = 6 ) const

• uint toUInt ( const QString & s, bool * ok = 0, int base = 0 ) const

• qlonglong toULongLong ( const QString & s, bool * ok = 0, int base = 0 ) const

• ushort toUShort ( const QString & s, bool * ok = 0, int base = 0 ) const

• QChar zeroDigit () const

• bool operator!= ( const QLocale & other ) const

• QLocale & operator= ( const QLocale & other )

• bool operator== ( const QLocale & other ) const

:staticاعضای عمومی • QLocale c ()

• QString countryToString ( Country country )

• QString languageToString ( Language language )

• void setDefault ( const QLocale & locale )

• QLocale system ()

74

Page 75: مروری بر کلاسهای Qt

: QTextEditکلس

:QTextEditکلس

توصیف کلس: فراهم میکند که با آن میتوانید متنی را تایپ نمایید و نمایش دهید.این نوع تایپ میتواند از نوع ساده باشد و یاwidgetاین کلس یک

را نیز فراهم میکند. WYSIWYGمتنی باشد که در آن همه جیز میتوانید استفاده کنید.این ویرایشگر حتی یک ویرایشگر

پاراگراف بال اولین کارایی این کلس را بیان کرده است.در صورتی که این کلس دو کار بزرگ برای شما انجام میدهد.و کار دوم آن به بزرگ به همراه مشتقاتش میباشد.HTMLنمایش گذاشتن فایلهای

زمانی از آن به عنوان یک ویرایشگر استفاده میکنید, کلیدهای زیر موثر هستند:

کلیدفشرده شده اقدامی که صورت میگیردBackspace کارکترها را به سمت چپ کرسر پاک میکند.Delete کارکترها را به سمت راست کرسر پاک میکند.Ctrl+A کرسر را به سر خط میبرد.Ctrl+B کرسر را به اولین کارکتر سمت چپ انتقال میدهد.Ctrl+C متن انتخاب شده را به حافظه میبرد.Ctrl+Insert متن انتخاب شده را به حافظه میبرد.Ctrl+D کارکترها را به سمت راست کرسر پاک میکند.Ctrl+E کرسر را به انتهای خط انتقال میدهد.Ctrl+F کرسر را یک کارکتر به سمت راست انتقال میدهد.Ctrl+H کرسر را یک کارکتر به سمت چپ انتقال میدهد.Ctrl+K تا آخر خط را پاک میکند.Ctrl+N کرسر را به یک خط پایینتر انتقال میدهد.Ctrl+P کرسر را به یک خط بالتر انتقال میدهد.Ctrl+V کپی میکند.QTextEditاز حافظه متن را خوانده و در Shift+Insert کپی میکند.QTextEditاز حافظه متن را خوانده و در Ctrl+X متن انتخاب شده را از آن محل پاک و در حافظه کپی میکند.Shift+Delete متن انتخاب شده را از آن محل پاک و در حافظه کپی میکند.

75

Page 76: مروری بر کلاسهای Qt

: QTextEditکلس

Ctrl+Z )undoباز میگردد به عمل یکی مانده به آخر و عمل آخر را از بین میبرد.(Ctrl+Y عمل اخر را دوباره انجام میدهد.LeftArrow کرسر را یک کارکتر به چپ انتقال میدهد.Ctrl+LeftArrow کرسر را یک لغت به سمت چپ انتقال میدهد.RightArrow کرسر را یک کارکتر به راست انتقال میدهد.Ctrl+RightArrow کرسر را یک لغت به سمت راست انتقال میدهد.UpArrow کرسر را یک خط به بال انتقال میدهد.Ctrl+UpArrow کرسر را به لغت بالیی انتقال میدهد.DownArrow کرسر را یک خط به پایین انتقال میدهد.Ctrl+Down Arrow کرسر را به لغت پایینی انتقال میدهد.PageUp کرسر را به یک صفحه بالتر انتقال میدهد.PageDown کرسر را به یک صفحه پایینتر انتقال میدهد.Home کرسر را به اول خط انتقال میدهد.Ctrl+Home کرسر را به اول متن انتقال میدهد.End کرسر را به آخر خط انتقال میدهد.Ctrl+End کرسر را به آخر متن انتقال میدهد.Alt+Wheel به صورت افقی با چرخش ماوس بر روی متن اسکرول میکند.Ctrl+Wheel بر روی متن زوم میکند.

enum QTextEdit::AutoFormattingFlagflags QTextEdit::AutoFormatting

ثابت مقدار توصیفQTextEdit::AutoNone 0 به صورت اتوماتیک فرمت نمیشود.

QTextEdit::AutoBulletList 0x00000001 راEnterزمانی که کاربر سمت چپ متن یک * بگذارد و یا اینکه بعد از متن فشار دهد یک بولت در آنجا میافتد.

QTextEdit::AutoAll 0xffffffff همه گونه فرمت بندی به صورت اتوماتیک انجام میشود.البته در حال حاضرفقط بولت بندی انجام میشود.

76

Page 77: مروری بر کلاسهای Qt

: QTextEditکلس

enum QTextEdit::CursorAction

ثابت مقدارQTextEdit::MoveBackward 0

QTextEdit::MoveForward 1

QTextEdit::MoveWordBackward 2

QTextEdit::MoveWordForward 3

QTextEdit::MoveUp 4

QTextEdit::MoveDown 5

QTextEdit::MoveLineStart 6

QTextEdit::MoveLineEnd 7

QTextEdit::MoveHome 8

QTextEdit::MoveEnd 9

QTextEdit::MovePageUp 10

QTextEdit::MovePageDown 11

enum QTextEdit::LineWrapMode

ثابت مقدارQTextEdit::NoWrap 0

QTextEdit::WidgetWidth 1

QTextEdit::FixedPixelWidth 2

QTextEdit::FixedColumnWidth 3

بارگذاری کنید.HTML استفده کنید سازنده این کلس را حتما با متن HTMLاگر میخواهید از این کلس به عنوان یک نمایشگر نکته :

77

Page 78: مروری بر کلاسهای Qt

:QTextOptionکلس

:QTextOptionکلس

توصیف کلس

این کلس یک توصیف عمومی برای خاصیتهای متون پیشرفته ایجاد میکند.یعنی این کلس میگوید که فلن ورودی متن میتواند فلنچیزها را بپذیرد و اینکه آنها چه معنی برای پردازش داشته باشند.

خواهر و برادر میباشند.QTextEditاین کلس با کلس

QTextOption برای encapsulate کردن خواص عمومی یک متن پیشرفته مورد استفاده قرار میگیرد و آنها را در یک Objectتکی قرار میدهد.

متن شاملrenedering و اطلعات زیاد استاندارد دیگری را برای alignment,directionاین کلس همچنین شامل اطلعاتی از قبیل میشود.

انواع عمومی :• enum Flag { IncludeTrailingSpaces }

• flags Flags

• enum WrapMode { NoWrap, WordWrap, ManualWrap, WrapAnywhere, WrapAtWordBoundaryOrAnywhere }

enum QTextOption::Flagflags QTextOption::Flags

مقدار ثابتQTextOption::IncludeTrailingSpaces 0x80000000

enum QTextOption::WrapMode شود.wrapping توصیف میکند که چگونه یک متن enumاین

مقدار ثابت توصیف

78

Page 79: مروری بر کلاسهای Qt

:QTextOptionکلس

QTextOption::NoWrap 0 نشده است.wrappمتن به هیچ عنوان

QtextOption::WordWrap 1 شده است.wrappمتن در کنارههای لغت

QTextOption::ManualWrap 2 wrappingی از اول خط به طول مشخصی اتفاق افتاده است.

QTextOption::WrapAnywhere 3 شود.حتی اگر درwrappمتن میتواند در هر نقطه از خط میانه یک لغت این اتفاق بیافتد.

QTextOption::WrapAtWordBoundaryOrAnywhere 4

در انتها و یا ابتدای یک لغتwrappingاگر میسر باشد, اتفاق میافتد.در غیر این صورت در یک نقطه که وسط خط

به آن اختصاص داده میشود اتفاق میافتد.حتی اگر آننقطه در وسط یک لغت باشد.

79

Page 80: مروری بر کلاسهای Qt

:QTextOptionکلس

توابع عمومی :• QTextOption ()

• QTextOption ( Qt::Alignment alignment )

• QTextOption ( const QTextOption & other )

• ~QTextOption ()

• Qt::Alignment alignment () const

• Flags flags () const

• void setAlignment ( Qt::Alignment alignment )

• void setFlags ( Flags flags )

• void setTabArray ( QList<qreal> tabStops )

• void setTabStop ( qreal tabStop )

• void setTextDirection ( Qt::LayoutDirection direction )

• void setUseDesignMetrics ( bool enable )

• void setWrapMode ( WrapMode mode )

• QList<qreal> tabArray () const

• qreal tabStop () const

• Qt::LayoutDirection textDirection () const

• bool useDesignMetrics () const

• WrapMode wrapMode () const

• QTextOption & operator= ( const QTextOption & other )

80

Page 81: مروری بر کلاسهای Qt

:QTextOptionکلس

:QCheckBoxکلس

:توصیف کلس با یک برچسب از نوع متن برای شما فراهم میکند.checkbox یک widgetاین

استفاده کرد.QButtonGroup را کنترل و مدیریت میکند.و برای مدیریت گروهی از آنها باید از کلس checkboxاین کلس یک

استفادهstateChanged تغییری کرد ,یعنی یا چک خورد یا چک آن برداشته شد,آنگاه میشود از سیگنال checkboxهنگامی که یک مربوطه چک خورده است یا خیر.widget بیان میکند که isCheckedکرد.همچنین تابع

وsetText برای این کلس هم میتوانید یک متن و یک آیکون تعیین کنید.برای تعیین کردن متن از تابع QPushButtonهمانند کلس استفاده میشود.setIconبرای تعیین آیکو از تابع

توابع مهمی که ارث گرفته میشوند و در این کلس نقش کلیدی دارند :

text, setText, text, pixmap, setPixmap, accel, setAccel, isToggleButton, setDown ,isDown , isOn, checkState, autoRepeat ,isExclusiveToggle, group, setAutoRepeat toggle, pressed, released, clicked, toggled, checkState و تابع stateChanged

:متغیرها• tristate : bool

به ارث گرفته میشود.QabstractButton متغیر از ۹

به ارث گرفته میشود.QWidget متغیر از ۵۴

به ارث گرفته میشود.QObject متغیر از ۱

:توابع عمومیQCheckBox ( QWidget * parent = 0 )

• QCheckBox ( const QString & text, QWidget * parent = 0 )

• Qt::CheckState checkState () const

• bool isTristate () const

• void setCheckState ( Qt::CheckState state )

81

Page 82: مروری بر کلاسهای Qt

:QCheckBoxکلس

• void setTristate ( bool y = true )

به ارث برده شدهاند.QAbstractButtonتابع عمومی از ۱۷

به ارث برده شدهاند.QWidget تابع عمومی از ۱۸۸

به ارث برده شدهاند.QObject تابع عمومی از ۲۸

به ارث برده شدهاند.QPaintDevice تابع عمومی از ۱۲

:سیگنالها• void stateChanged ( int state )

به ارث گرفته شده است.QAbstractButton سیگنال از ۴

به ارث گرفته شده است.QWidget سیگنال از ۱

به ارث گرفته شده است.QObejct سیگنال از ۱

:عضوهای به ارث برده شده۵ slot از QAbstractButton.به ارث گرفته شده است

۱۷ slot از QWidget.به ارث گرفته شده است

۱ slot از QObject.به ارث گرفته شده است

به ارث گرفته شده است.QWidget عمومی از static عضو ۴

به ارث گرفته شده است.QObject عمومی ازstatic عضو ۴

به ارث گرفته شده است.QAbstractButton از protected تابع ۳

به ارث گرفته شده است.QWidget از protected تابع ۳۹

به ارث گرفته شده است.QObject از protected تابع ۷

به ارث گرفته شده است.QPaintDevice از protected تابع ۱

82

Page 83: مروری بر کلاسهای Qt

:QCheckBoxکلس

:QScrollBarکلس

:توصیف کلسwidget.مذکور برای شما یک اسکرول افقی و یا عمودی فراهم میکند

استفاده کنید.QScrollArea دیگر اسکرول ایجاد کنید, برای راحتی میتوانید از کلس widgetاگر نیاز دارید بر روی یک

این مقدار را فراهمvalue از شروع اسکرول بار فاصله دارد.که تابع sliderهر اسکرول باری یک مقداری دارد که اشاره به این دارد که جقدر ارزشگذاری میشود.setValueمیکند.و این مقدار با تابع

راslider برمیگردانند, است.زیرا این دو تابع کمترین و بیشترین حالت maximum و minimumاین مقدار همیشه بین مقداری که دو تابع را ارزش گذاری کنید.slider میتوانید حداقل و حداکثر یک محدوده setMinumum و setMaximumبا توابع بازمیگردانند.

value()==minimum()

value()==maximum()()maximum() - minimum() + pageStep = طول سند

آن را مقدار دهی میکند.setPageStep مشخص میکند که چقدر از صفحه گذشته است و تابع pageStepتابع

:توابع عمومی

• QScrollBar ( QWidget * parent = 0 )

• QScrollBar ( Qt::Orientation orientation, QWidget * parent = 0 )

• ~QScrollBar ()

به ارث گرفته شدهاند.QAbstractSlider تابع عمومی از ۲۲

به ارث گرفته شدهاند.QWidget تابع عمومی از ۱۸۸

83

Page 84: مروری بر کلاسهای Qt

:QScrollBarکلس

به ارث گرفته شدهاند.QObject تابع عمومی از ۲۸

به ارث گرفته شدهاند.QPaintDevice تابع عمومی از ۱۲

:عضوهای به ارث گرفته شده به ارث گرفته شدهاند.QAbstractSlider متغیر از ۱۱

به ارث گرفته شدهاند.QWidget متغیر از ۵۴

به ارث گرفته شده است.QObject متغیر از ۱

به ارث گرفته شده است.QAbstractSlider اسلت عمومی از ۲

به ارث گرفته شده است.QWidget اسلت عمومی از ۱۷

به ارث گرفته شده است.QObject اسلت عمومی از ۱

به ارث گرفته شده است.QAbstractSlider سیگنال از۶

به ارث گرفته شده است.QWidget سیگنال از ۱

به ارث گرفته شده است.QObject سیگنال از۱

به ارث گرفته شده است.QObject ازstatic عضو عمومی ۴

به ارث گرفته شده است.QWidget ازstatic عضو عمومی ۴

به ارث گرفته شده است.QAbstractSlider ازprotected تابع ۳

به ارث گرفته شده است.QWidget ازprotected تابع ۳۹

به ارث گرفته شده است.QObject ازprotected تابع ۷

به ارث گرفته شده است.QPaintDevice ازprotected تابع ۱

84

Page 85: مروری بر کلاسهای Qt

:QScrollBarکلس

:QLineEditکلس :توصیف کلس

یک ادیتور تک خطی برای شما فراهم میکند.widgetاین

میباشد.redo و copy/paste , drag & drop , undoاین ادیتور شامل

کند.این تابع هنگامی به کار میرود کهcopy/paste میتوانید ادیتور را فقط برای نوشتن کنید , یعنی کسی نتواند echoChangeبا تابع بخواهید کلمه عبور وارد کنید.

میباشد که پیشتر توضیح داده شد.QTextEditکلس مربوط به این کلس,

کلیدهایی که میتوان در این ادیتور تک خطی استفاده کرد به شرح زیر میباشند:

کلید فشرده شده عملیاتی که روی میدهدLeft Arrow کرسر را یک کارکتر به سمت چپ انتقال میدهد.

Shift+Left Arrow متن را انتخاب و یک کارکتر به سمت چپ انتقال میدهد.

Right Arrow کرسر را یک کارکتر به سمت راست انتقال میدهد.Shift+Right Arrow

متن را انتخاب و یک کارکتر به سمت راست انتقال میدهد.

Home کرسر را به سر خط انتقال میدهد.

End کرسر را به پایان خط انتقال میدهد.

Backspace یک کارکتر به سمت چپ کرسر پاک میکند.

Ctrl+Backspace یک کلمه به سمت چپ کرسر پاک میکند.

85

Page 86: مروری بر کلاسهای Qt

:QLineEditکلس

Delete یک کارکتر به سمت راست کرسر پاک میکند.

Ctrl+Delete یک کلمه به سمت راست کرسر پاک میکند.

Ctrl+A کرسر را به سر خط انتقال میدهد.

Ctrl+B کرسر را یک کارکتر به سمت چپ انتقال میدهد.

Ctrl+C انتقال میدهد.clipboardمتن انتخاب شده را به

Ctrl+Insert انتقال میدهد.clipboardمتن انتخاب شده را به

Ctrl+D به سمت راست کرسر یک کارکتر پاک میکند.

Ctrl+E کرسر را به پایان خط انتقال میدهد.

Ctrl+F کرسر را یک کارکتر به سمت راست انتقال میدهد.

Ctrl+H به سمت چپ کرسر یک کارکتر پاک میکند.

Ctrl+K تا آخر خط همه چیز را پاک میکند.

Ctrl+V میکند.paste را در ادیتور clipboardمتن داخل

Shift+Insert میکند.paste را در ادیتور clipboardمتن داخل

Ctrl+X کپی میکند.clipboardمتن انتخاب شده را از آن محل پاک و در

Shift+Delete کپی میکند.clipboardمتن انتخاب شده را از آن محل پاک و در

Ctrl+Z )Undoآخرین عمل انجام شده را از بین میبرد.(

Ctrl+Y )Redoآخرین عمل انجام شده را تکرار میکند.(

enum QLineEdit::EchoMode : به نمایش درآید.QLineEdit توصیف میکند که چگونه محتویات داخل یک enumاین

ثابت مقدار توصیفQLineEdit::Normal

0 کارکترها را زمانی که وارد میشوند به نمایش میگذارد.این به صورت پیشفرض

میباشد.

QLineEdit::NoEcho

1 این هیچ چیزی را نمایش نمیدهد.هنگامی استفاده میشود که بخواهید کلمه عبور

وارد کنید و طول آن را کسی نفهمد.

QLineEdit::Password

2 این گزینه هم به درد وارد کردن کلمه عبور میخورد.زیرا به جای هر کارکتر یک

ستاره نمایش میدهد.

86

Page 87: مروری بر کلاسهای Qt

:QTabBarکلس

: QTabBarکلس

:توصیف کلس به فارسی برگه ترجمه شده است.Tab میسازد.که Tab Barاین کلس برای شما یک

به صورت بصری بیان شده است:Tabدر شکل زیر

QTabBar برای استفاده خیلی سرراست میباشد.این کلس Tab ها را با استفاده ازenum ی به نام shapeرسم میکند.و یک سیگنال انتخاب شود منتشر میکند.Tabهنگامی که

Qt همچنین کلسی آماده ساخت به نام QTabWidget.دارد

شود.enable یا disable که عضو این کلس است setTabEnabled میتواند به صورت منحصر به فرد با تابع Tabهر

تغییر کنند.setTabToolTip و setTabData,setTabText ,setTabIconصفات برگهها میتوانند با توابع

count در مکانی ویژه گذارده میشوند.تعداد کل برگهها با تابع insertTab ما اضافه میشوند و با تابع TabBar به addTabبرگهها با تابع پاک میشوند.removeTabبرگردانده میشود.و با تابع

:انواع عمومی• enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast, ...,

TriangularEast }

:متغیرها• count : const int• currentIndex : int• drawBase : bool• iconSize : Qsize• shape : Shape

87

Page 88: مروری بر کلاسهای Qt

:QTabBarکلس

به ارث برده میشود.QWidget متغیر از ۵۰

به ارث برده میشود.QObject متغیر از ۱

:توابع عمومی• QTabBar ( QWidget * parent = 0 )

• ~QTabBar ()

• int addTab ( const QString & text )

• int addTab ( const QIcon & icon, const QString & text )

• int count () const

• int currentIndex () const

• bool drawBase () const

• QSize iconSize () const

• int insertTab ( int index, const QString & text )

• int insertTab ( int index, const QIcon & icon, const QString & text )

• bool isTabEnabled ( int index ) const

• void removeTab ( int index )

• void setDrawBase ( bool drawTheBase )

• void setIconSize ( const QSize & size )

• void setShape ( Shape shape )

• void setTabData ( int index, const QVariant & data )

• void setTabEnabled ( int index, bool enabled )

• void setTabIcon ( int index, const QIcon & icon )

• void setTabText ( int index, const QString & text )

• void setTabTextColor ( int index, const QColor & color )

• void setTabToolTip ( int index, const QString & tip )

• void setTabWhatsThis ( int index, const QString & text )

• Shape shape () const

• QVariant tabData ( int index ) const

• QIcon tabIcon ( int index ) const

88

Page 89: مروری بر کلاسهای Qt

:QTabBarکلس

• QRect tabRect ( int index ) const

• QString tabText ( int index ) const

• QColor tabTextColor ( int index ) const

• QString tabToolTip ( int index ) const

• QString tabWhatsThis ( int index ) const

به ارث گرفته میشوند.QWidget تابع عمومی از ۱۸۸

به ارث گرفته میشوند.QObject تابع عمومی از ۲۸

به ارث گرفته میشوند.QPaintDevice تابع عمومی از ۱۲

اسلتهای عمومی :• void setCurrentIndex ( int index )

به ارث گرفته میشوند.QWidget اسلت عمومی از ۱۷

به ارث گرفته میشوند.QObject اسلت عمومی از ۱•

:سیگنالها• void currentChanged ( int index )

به ارث گرفته میشود.QWidget سیگنال از۱

به ارث گرفته میشود.QObject سیگنال از۱

:protectedتوابع • virtual void tabInserted ( int index )

• virtual void tabLayoutChange ()

• virtual void tabRemoved ( int index )

• virtual QSize tabSizeHint ( int index ) const

به ارث گرفته میشود.QWidget ازprotected تابع ۳۹

به ارث گرفته میشود.QObject ازprotected تابع ۷

89

Page 90: مروری بر کلاسهای Qt

:QTabBarکلس

به ارث گرفته میشود.QPaintDevice ازprotected تابع ۱

:عضوهای به ارث برده شده به ارث گرفته میشوند.QObject از static عضو عمومی ۴

. به ارث گرفته میشوندQWidget ازstatic عضو عمومی ۴

90

Page 91: مروری بر کلاسهای Qt

:QFileکلس

: QFileکلس :توصیف کلس

این کلس واسطهای برای خواندن و نوشتن در فایل را فراهم میکند.

برای خواندن و نوشتن بر روی فایلهای متنی و باینری میباشد.این بعضی اوقات به صورت تنها استفاده میشودI/O deviceاین کلس یک به کار میرود.QTextStream و QDataStreamو در خیلی اوقات برای راحتی کار با کلسهای

setFileNameنام فایل در اکثر اوقات به عنوان پارامتر به سازنده پاس میشود.البته شما هر موقع که خواستید میتوانید نام فایل را با تابع مشخص کنید.

یک فایل را پاک کنید.remove چک کنید.همچنین با تابع existsشما میتوانید وجود یا عدم وجود یک فایل را با تابع

استفاده کنید.QDir و QFileInfo کلس ۲برای کارهای پیشرفته با فایل میتوانید از

فلش میشوند.flush بسته و با تابع close باز , با تابع openفایلها با تابع

به ارث گرفته میشود محدوده کار بر روی فایل گستردهتر میشود.QIODeviceدو کلس دیگر هم نام برده شد که با توابعی که از کلس

به تکه کد زیر دقت کنید :

QFile file("in.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return;

while (!file.atEnd()) {QByteArray line = file.readLine();process_line(line);}

این تکه کد , خط به خط یک فایل را میخواند و در حافظه قرار میدهد.

همچنین تکه کد زیر کار کد بال را انجام میدهد ولی با تفاوت استفاده از توابع استفاده شده :

91

Page 92: مروری بر کلاسهای Qt

:QFileکلس

QFile file("in.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return;QTextStream in(&file);while (!in.atEnd()) {QString line = in.readLine();process_line(line);}

و تکه کد زیر با عملگر >> در فایل مینویسد:QFile file("out.txt");if (!file.open(QIODevice::WriteOnly | QIODevice::Text))return;QTextStream out(&file);out << "The magic number is: " << 49 << "\n";

:انواع عمومی• typedef DecoderFn

• typedef EncoderFn

• enum FileError { NoError, ReadError, WriteError, FatalError, ..., CopyError }

• enum Permission { ReadOwner, WriteOwner, ExeOwner, ReadUser, ..., ExeOther }

• typedef PermissionSpec

• flags Permissions

:توابع عمومی• QFile ( const QString & name )

• QFile ( QObject * parent )

92

Page 93: مروری بر کلاسهای Qt

:QFileکلس

• QFile ( const QString & name, QObject * parent )

• ~QFile ()

• bool copy ( const QString & newName )

• FileError error () const

• bool exists () const

• QString fileName () const

• bool flush ()

• int handle () const

• virtual bool isSequential () const

• bool link ( const QString & linkName )

• virtual bool open ( OpenMode mode )

• bool open ( FILE * fh, OpenMode mode )

• bool open ( int fd, OpenMode mode )

• Permissions permissions () const

• QString readLink () const

• bool remove ()

• bool rename ( const QString & newName )

• bool resize ( qint64 sz )

• void setFileName ( const QString & name )

• bool setPermissions ( Permissions permissions )

• void unsetError ()

به ارث گرفته شدهاند.QIODevice تابع عمومی از ۳۲

به ارث گرفته شدهاند.QObject تابع عمومی از ۲۸

:staticعضوهای عمومی • bool copy ( const QString & fileName, const QString &

newName )

93

Page 94: مروری بر کلاسهای Qt

:QFileکلس

• QString decodeName ( const QByteArray & localFileName )

• QString decodeName ( const char * localFileName )

• QByteArray encodeName ( const QString & fileName )

• bool exists ( const QString & fileName )

• bool link ( const QString & fileName, const QString & linkName )

• Permissions permissions ( const QString & fileName )

• QString readLink ( const QString & fileName )

• bool remove ( const QString & fileName )

• bool rename ( const QString & oldName, const QString & newName )

• bool resize ( const QString & fileName, qint64 sz )

• void setDecodingFunction ( DecoderFn function )

• void setEncodingFunction ( EncoderFn function )

• bool setPermissions ( const QString & fileName, Permissions permissions )

به ارث گرفته شدهاند.QObject از static عضو عمومی ۴

:عضوهای به ارث گرفته شده افزوده

به ارث گرفته شده است.QObject متغیر از۱

به ارث گرفته شده است.QObject اسلت عمومی از۱

به ارث گرفته شده است.QIODevice سیگنال از۳

به ارث گرفته شده است.QObject سیگنال از۱

به ارث گرفته شده است.QIODevice ازprotected تابع ۵

به ارث گرفته شده است.QObject ازprotected تابع ۷

enum QFile::FileError

94

Page 95: مروری بر کلاسهای Qt

:QFileکلس

بر میگردد را توصیف میکند.error خطاهایی را که با تابع enumاین

ثابت مقدار توصیف

QFile::NoError 0 هیچ خطایی روی نداده است.

QFile::ReadError 1 هنگام خواندن از فایل یک خطا روی داده است.

QFile::WriteError 2 هنگام نوشتن بر روی یک فایل خطایی رخ داده است.

QFile::FatalError 3 ” رخ داده است.fatal errorیک خطای مهلک یا همان "QFile::ResourceError

4

QFile::OpenError 5 فایل نمیتواند باز شود.

QFile::AbortError 6 عملیات متوقف شد.QFile::TimeOutError

7 روی داده است.timeoutیک

QFile::UnspecifiedError

8 یک خطای نامشخص روی داده است.

QFile::RemoveError

9 فایل نمیتواند پاک شود.

QFile::RenameError

10 فایل نمیتواند تغییر نام پیدا کند.

QFile::PositionError

11 موقعیت درون فایل نمیتواند تغییر کند.

QFile::ResizeError

12 فایل مذکور را نمیتوان اندازهاش را تغییر داد.

QFile::PermissionsError

13 فایل مذکور قابل دسترس نمیباشد.

QFile::CopyError 14 فایل نمیتواند کپی شود.

95

Page 96: مروری بر کلاسهای Qt

:QFileکلس

enum QFile::Permissionflags QFile::Permissions

Constant Value Description

QFile::ReadOwner 0x4000 فایل قابل خواندن برای مالک خود است.QFile::WriteOwner

0x2000 فایل قابل نوشتن برای مالک خود است.

QFile::ExeOwner 0x1000 فایل قابل اجرا برای مالک خود است.

QFile::ReadUser 0x0400 فایل قابل خواندن در سطح کاربر است.

QFile::WriteUser 0x0200 فایل قابل نوشتن در سطح کاربر است.

QFile::ExeUser 0x0100 فایل قابل اجرا در سطح کاربر است.

QFile::ReadGroup 0x0040 فایل قابل خواندن در سطح گروه است.QFile::WriteGroup

0x0020 فایل قابل نوشتن در سطح گروه است.

QFile::ExeGroup 0x0010 فایل قابل اجرا در سطح گروه است.

QFile::ReadOther 0x0004 فایل قابل خواندن در همه سطوح است.QFile::WriteOther

0x0002 فایل قابل نوشتن در همه سطوح است.

QFile::ExeOther 0x0001 فایل قابل اجرا در همه سطوح است.

96

Page 97: مروری بر کلاسهای Qt

:QToolBoxکلس

: QToolBoxکلس : توصیف کلس

درآمدهاند را فراهم میکند.Tabی که به صورت widgetاین کلس یک ستون از قسمتهای

یTab جاری)نمایش میدهد.هر Tab ها را یکی در بالی دیگری با محتوای هر قسمت (Tab است که ستونی از widget یک toolboxیک ها دارد.Tabیک موقعیت مکانی در ستون

تعیین کنید.itemIcon تعیین کند.و به صورت اختیاری آیکون آن را با itemTextهر قسمت میتواند متن خود را با تابع

insertItem استفاده نمایید.و اگر موقیعت مکانی آن برایتان مهم است باید از تابع addItemبرای اضافه کردن هر قسمت میتوانید از تابع استفاده نمایید.

را پاک میکند.Item هر removeItem) را برمیگرداند.و تابع Item تعداد هر قسمت (countتابع

:متغیر ها• count : const int

• currentIndex : int

به ارث گرفته شدهاند.QFrame متغیر از ۶

به ارث گرفته شدهاند.QWidget متغیر از۵۴

به ارث گرفته شده است.QObject متغیر از ۱

:توابع عمومی• QToolBox ( QWidget * parent = 0, Qt::WFlags f = 0 )

• ~QToolBox ()

• int addItem ( QWidget * widget, const QIcon & iconSet, const QString & text )

• int addItem ( QWidget * w, const QString & text )

• int count () const

• int currentIndex () const

• QWidget * currentWidget () const

97

Page 98: مروری بر کلاسهای Qt

:QToolBoxکلس

• int indexOf ( QWidget * widget ) const

• int insertItem ( int index, QWidget * widget, const QIcon & icon, const QString & text )

• int insertItem ( int index, QWidget * widget, const QString & text )

• bool isItemEnabled ( int index ) const

• QIcon itemIcon ( int index ) const

• QString itemText ( int index ) const

• QString itemToolTip ( int index ) const

• void removeItem ( int index )

• void setItemEnabled ( int index, bool enabled )

• void setItemIcon ( int index, const QIcon & icon )

• void setItemText ( int index, const QString & text )

• void setItemToolTip ( int index, const QString & toolTip )

• QWidget * widget ( int index ) const

به ارث گرفته شدهاند.QFrame تابع عمومی از۱۳

به ارث گرفته شدهاند.QWidget تابع عمومی از۱۸۸

به ارث گرفته شدهاند.QObject تابع عمومی از ۲۸

به ارث گرفته شدهاند.QPaintDevice تابع عمومی از ۱۲

Slotهای عمومی : • void setCurrentIndex ( int index )

• void setCurrentWidget ( QWidget * widget )

۱۷ slot عمومی از QWiget.به ارث گرفته شدهاند

۱ slot عمومی از QObject.به ارث گرفته شدهاند

98

Page 99: مروری بر کلاسهای Qt

:QToolBoxکلس

Signalها : • void currentChanged ( int index )

به ارث گرفته شده است.QWidget سیگنال از ۱

به ارث گرفته شده است.QObject سیگنال از۱

:protectedتوابع • virtual void itemInserted ( int index )

• virtual void itemRemoved ( int index )

به ارث گرفته شده است.QWidget ازprotected تابع ۳۹

به ارث گرفته شده است.QObject ازprotected تابع ۷

به ارث گرفته شده است.QPaintDevice از protected تابع ۱

:عضوهای افزوده به ارث برده شده به ارث گرفته شده است.QFrame ازstatic عضو عمومی ۲

به ارث گرفته شده است.QObject ازstatic عضو عمومی ۴

به ارث گرفته شده است.QWidget ازstatic عضو عمومی ۴

99

Page 100: مروری بر کلاسهای Qt

:QTreeViewکلس

: QTreeViewکلس :توصیف کلس

این کلس یک پیادهسازی از نمایش درختی محتوا میباشد.

ها به صورت درخت از یک مدل را پیادهسازی میکند.این کلس برای سیستمهای استاندارد لیستهایItem نمایش QTreeViewیک سلسله مراتبی استفاده میشود.

تکه کد زیر را ببینید :

QDirModel *model = new QDirModel;QTreeView *tree = new QTreeView(splitter);tree->setModel(model);

با کلسQt برای شما ترسیم میکند.به یاد داشته باشید که محتوای یک فهرست در modelمثال بال دقیقا یک چنین درختی از روی QDirModel.فراهم میشود

: متغیرها• indentation : int

• itemsExpandable : bool

• rootIsDecorated : bool

• uniformRowHeights : bool

به ارث گرفته شدهاند.QAbstractItemView متغیر از ۱۰

به ارث گرفته شدهاند.QAbstractScrollArea متغیر از۲

به ارث گرفته شدهاند.QFrame متغیر از۶

به ارث گرفته شدهاند.QWidget متغیر از۵۴

به ارث گرفته شده است.QObject متغیر از۱

:توابع عمومی• QTreeView ( QWidget * parent = 0 )

100

Page 101: مروری بر کلاسهای Qt

:QTreeViewکلس

• ~QTreeView ()

• int columnAt ( int x ) const

• int columnViewportPosition ( int column ) const

• int columnWidth ( int column ) const

• virtual void doItemsLayout ()

• QHeaderView * header () const

• int indentation () const

• QModelIndex indexAbove ( const QModelIndex & index ) const

• QModelIndex indexBelow ( const QModelIndex & index ) const

• bool isColumnHidden ( int column ) const

• bool isExpanded ( const QModelIndex & index ) const

• bool isRowHidden ( int row, const QModelIndex & parent ) const

• bool itemsExpandable () const

• bool rootIsDecorated () const

• virtual void scrollTo ( const QModelIndex & index, ScrollHint hint = EnsureVisible )

• void setColumnHidden ( int column, bool hide )

• void setExpanded ( const QModelIndex & index, bool expanded )

• void setHeader ( QHeaderView * header )

• void setIndentation ( int i )

• void setItemsExpandable ( bool enable )

• void setRootIsDecorated ( bool show )

• void setRowHidden ( int row, const QModelIndex & parent, bool hide )

• void setUniformRowHeights ( bool uniform )

101

Page 102: مروری بر کلاسهای Qt

:QTreeViewکلس

• bool uniformRowHeights () const

• virtual QRect visualRect ( const QModelIndex & index ) const

به ارث گرفته شده است.QAbstractItemView تابع عمومی از۳۹

به ارث گرفته شده است.QAbstractScrollArea تابع عمومی از۸

به ارث گرفته شده است.QFrame تابع عمومی از۱۳

به ارث گرفته شده است.QWidget تابع عمومی از۱۸۸

به ارث گرفته شده است.QObject تابع عمومی از۲۸

به ارث گرفته شده است.QPaintDevice تابع عمومی از۱۲

Slot: های عمومی• void collapse ( const QModelIndex & index )

• void expand ( const QModelIndex & index )

• void hideColumn ( int column )

• void resizeColumnToContents ( int column )

• virtual void selectAll ()

• void showColumn ( int column )

• void sortByColumn ( int column )

۸ slot عمومی از QAbstractItemView.به ارث گرفته شدهاند

۱۷ slotعمومی از QWidget.به ارث گرفته شدهاند

۱ slotعمومی از QObject.به ارث گرفته شده است

Signalها : • void collapsed ( const QModelIndex & index )

102

Page 103: مروری بر کلاسهای Qt

:QTreeViewکلس

• void expanded ( const QModelIndex & index )

۶ signalاز QAbstractItemView.به ارث گرفته شدهاند

۱ signalاز QWidget.به ارث گرفته شده است

۱ signalاز QObject.به ارث گرفته شده است

: protectedتوابع • virtual void drawBranches ( QPainter * painter, const QRect & rect, const QModelIndex &

index ) const

• virtual void drawRow ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const

• virtual int horizontalOffset () const

• int indexRowSizeHint ( const QModelIndex & index ) const

• virtual QModelIndex moveCursor ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers )

• virtual void rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end )

• virtual void rowsInserted ( const QModelIndex & parent, int start, int end )

• virtual void scrollContentsBy ( int dx, int dy )

• virtual void setSelection ( const QRect & rect, QItemSelectionModel::SelectionFlags command )

• virtual int sizeHintForColumn ( int column ) const

• virtual int verticalOffset () const

• virtual QRegion visualRegionForSelection ( const QItemSelection & selection ) const

به ارث گرفته شدهاند.QAbstractItemView ازprotected تابع ۳۷

به ارث گرفته شدهاند.QAbstractScrollArea ازprotected تابع ۱۷

به ارث گرفته شدهاند.QWidget ازprotected تابع ۳۹

103

Page 104: مروری بر کلاسهای Qt

:QTreeViewکلس

به ارث گرفته شدهاند.QObject ازprotected تابع ۷

به ارث گرفته شده است.QPaintDevice از protected تابع ۱

Slot هایprotected :

• void columnCountChanged ( int oldCount, int newCount )

• void columnMoved ()

• void columnResized ( int column, int oldSize, int newSize )

• void rowsRemoved ( const QModelIndex & parent, int start, int end )

۸ slot protected از QAbstractItemView.به ارث گرفته شدهاند

:عضوهای به ارث گرفته شده افزوده به ارث گرفته شده اند.QFrame ازstatic عضو عمومی ۲

به ارث گرفته شده اند.QWidget ازstatic عضو عمومی ۴

به ارث گرفته شده اند.QObject ازstatic عضو عمومی ۴

104

Page 105: مروری بر کلاسهای Qt

:QtSqlماژول

:QtSqlماژول این ماژول کار بر روی بانک اطلعاتی را آسان میسازد و میتواند با پایگاه دادههای زیر ارتباط برقرار کند:

● IBM DB2

● Borland InterBase

● MySQL

● PostgreSQL

● Oracle

● Microsoft SQL Server (ODBC)

● SQLite

● Sybase Adaptive Server

105

Page 106: مروری بر کلاسهای Qt

:QSqlDatabaseکلس

: QSqlDatabaseکلس :توصیف کلس

برایمان فراهم میکند.Database به connectionاین کلس یک

میباشد.این کلس به مشخصات درایور پایگاهی که میخواهیم به آنDB یک Backendاین کلس واسطی خلصه برای فقط دسترسی به متصل شویم تکیه دارد.

به تکه کد زیر دقت کنید:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");db.setHostName("localhost");db.setDatabaseName("testdb");db.setUserName("mohsen");db.setPassword("iillffo@");bool ok = db.open();

addDatabase ی که از همین کلس با نام static از نوع این کلس تعریف میکند و به آن مقداری که تابع Objectتکه کد بال در ابتدا یک , نامhostnameمیباشد را با پارمتر درایوری که میخواهیم به آن میدهیم.در واقع به آن میگوییم که به چه بانکی متصل گردد.حال باید

بانک , نامکاربری و کلمه عبور بانک را تنظیم نماییم.

مذکور برای صدا زدن توابعی که در کد آمده استفاده کرده و پارامترهای بال را تنظیم میکنیم.Objectبدین منظور از

را صدا زده تا اتصال به بانک برقرار شود.open تابع Objectدر آخر با همین

باید از جدول زیر استفاده کرد:addDatabaseبرای استفاده از لیست پارامترهای تابع

توصیف نوع درایورQDB2 IBM DB2 و یا بالتر ۷.۱ نسخه QIBASE Borland InterBase درایورQMYSQL MySQL درایورQOCI Oracle Call Interface درایورQODBC ODBC درایور QPSQL درایور PostgreSQL 7.3و بالتر

106

Page 107: مروری بر کلاسهای Qt

:QSqlDatabaseکلس

QSQLITE درایور SQLiteو یا بالتر QSQLITE2 ۲نسخه SQLite درایور QTDS Sybase Adaptive Server

107

Page 108: مروری بر کلاسهای Qt

:QSqlDatabaseکلس

:توابع عمومی• QSqlDatabase ()

• QSqlDatabase ( const QSqlDatabase & other )

• ~QSqlDatabase ()

• void close ()

• bool commit ()

• QString connectOptions () const

• QString databaseName () const

• QSqlDriver * driver () const

• QString driverName () const

• QSqlQuery exec ( const QString & query = QString() ) const

• QString hostName () const

• bool isOpen () const

• bool isOpenError () const

• bool isValid () const

• QSqlError lastError () const

• bool open ()

• bool open ( const QString & user, const QString & password )

• QString password () const

• int port () const

• QSqlIndex primaryIndex ( const QString & tablename ) const

• QSqlRecord record ( const QString & tablename ) const

108

Page 109: مروری بر کلاسهای Qt

:QSqlDatabaseکلس

• bool rollback ()

• void setConnectOptions ( const QString & options = QString() )

• void setDatabaseName ( const QString & name )

• void setHostName ( const QString & host )

• void setPassword ( const QString & password )

• void setPort ( int port )

• void setUserName ( const QString & name )

• QStringList tables ( QSql::TableType type = QSql::Tables ) const

• bool transaction ()

• QString userName () const

• QSqlDatabase & operator= ( const QSqlDatabase & other )

: staticاعضای عمومی • QSqlDatabase addDatabase ( const QString & type, const QString & connectionName =

QLatin1String( defaultConnection ) )

• QSqlDatabase addDatabase ( QSqlDriver * driver, const QString & connectionName = QLatin1String( defaultConnection ) )

• QSqlDatabase cloneDatabase ( const QSqlDatabase & other, const QString & connectionName )

• QStringList connectionNames ()

• bool contains ( const QString & connectionName = QLatin1String( defaultConnection ) )

• QSqlDatabase database ( const QString & connectionName = QLatin1String( defaultConnection ), bool open = true )

• QStringList drivers ()

• bool isDriverAvailable ( const QString & name )

109

Page 110: مروری بر کلاسهای Qt

:QSqlDatabaseکلس

• void registerSqlDriver ( const QString & name, QSqlDriverCreatorBase * creator )

• void removeDatabase ( const QString & connectionName )

:protectedتوابع • QSqlDatabase ( const QString & type )

• QSqlDatabase ( QSqlDriver * driver )

: QSqlErrorکلس :توصیف کلس

ایجاد شده است.SQL های errorاین کلس برای گزارش و کار با

110

Page 111: مروری بر کلاسهای Qt

:QSqlErrorکلس

های بانک مشخص شده فراهم آورد.error از این کلس میتواند اطلعاتی از Objectیک

قرار داده شدهاند.enumی یک شماره و یک نوع دارد.که شما با آن کار میکنید.و در یک errorهر

:انواع عمومی • enum ErrorType { NoError, ConnectionError, StatementError, TransactionError, UnknownError }

:توابع عمومی• QSqlError ( const QString & driverText = QString(), const QString & databaseText = QString(),

ErrorType type = NoError, int number = -1 )

• QSqlError ( const QSqlError & other )

• ~QSqlError ()

• QString databaseText () const

• QString driverText () const

• bool isValid () const

• int number () const

• void setDatabaseText ( const QString & databaseText )

• void setDriverText ( const QString & driverText )

• void setNumber ( int number )

• void setType ( ErrorType type )

• QString text () const

• ErrorType type () const

• QSqlError & operator= ( const QSqlError & other )

enum QSqlError::ErrorType

هایی که اتفاق میافتد را تشریح میکند.error ,enumاین

111

Page 112: مروری بر کلاسهای Qt

:QSqlErrorکلس

ثابت مقدار توصیفQsqlError::NoError 0 ی اتفاق نیافتاده است.errorهیچ

QSqlError::ConnectionError 1 connection.برقرار نشده است

QSqlError::StatementError 2 نحوی میباشد.error دارای SQLدستور

QSqlError::TransactionError 3 transaction.دادهها انجام نشده است

QSqlError::UnknownError 4 error.ناشناخته است

112

Page 113: مروری بر کلاسهای Qt

:QSqlQueryکلس

:QSqlQueryکلس

:توصیف کلس را فراهم میکند.SQLاین کلس اجرا و دستکاری دستورات

به تکه کد زیر دقت کنید:

QSqlQuery query("SELECT country FROM artist");while (query.next()) {QString country = query.value(0).toString();doSomething(country);}

کردنnavigate کنیم.توابعی برای navigate را query ایجاد کردیم و یک حلقه ایجاد کردیم که نتیجه آن query با پارامتر یک Objectیک رکورد ها به شرح زیر وجود دارد:

next()

previous()

first()

last()

seek()

اخذ مینماییم.value را با تابع country کرده باشیم و در هر دور مقدار فیلد navigateاین حلقه زمانی به اتمام میرسد که کل نتایج را

به تکه کد زیر دقت کنید:

QSqlQuery query("SELECT * FROM artist");int fieldNo = query.record().indexOf("country");while (query.next()) {QString country = query.value(fieldNo).toString();doSomething(country);}

را صفر ندهیم باید شمارهvalue مذکور قید نگردیده است.و اگر در حلقه پارامتر تابع queryاگر در این تکه کد دقت نمایید اسم فیلدی در آن فیلد را بدهیم که با خط زیر فیلدها را شمارهگذاری میکنیم و آنگاه میتوانیم از شماره هر فیلد استفاده کنیم:

int fieldNo = query.record().indexOf("country");

113

Page 114: مروری بر کلاسهای Qt

:QSqlQueryکلس

:توابع عمومی• QSqlQuery ( QSqlResult * result )

• QSqlQuery ( const QString & query = QString(), QSqlDatabase db = QSqlDatabase() )

• QSqlQuery ( QSqlDatabase db )

• QSqlQuery ( const QSqlQuery & other )

• ~QSqlQuery ()

• void addBindValue ( const QVariant & val, QSql::ParamType paramType = QSql::In )

• int at () const

• void bindValue ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType = QSql::In )

• void bindValue ( int pos, const QVariant & val, QSql::ParamType paramType = QSql::In )

• QVariant boundValue ( const QString & placeholder ) const

• QVariant boundValue ( int pos ) const

• QMap<QString, QVariant> boundValues () const

• void clear ()

• const QSqlDriver * driver () const

• bool exec ( const QString & query )

• bool exec ()

• QString executedQuery () const

• bool first ()

• bool isActive () const

114

Page 115: مروری بر کلاسهای Qt

:QSqlQueryکلس

• bool isForwardOnly () const

• bool isNull ( int field ) const

• bool isSelect () const

• bool isValid () const

• bool last ()

• QSqlError lastError () const

• QVariant lastInsertId () const

• QString lastQuery () const

• bool next ()

• int numRowsAffected () const

• bool prepare ( const QString & query )

• bool previous ()

• QSqlRecord record () const

• const QSqlResult * result () const

• bool seek ( int index, bool relative = false )

• void setForwardOnly ( bool forward )

• int size () const

• QVariant value ( int index ) const

• QSqlQuery & operator= ( const QSqlQuery & other )

115

Page 116: مروری بر کلاسهای Qt

:QSqlFieldکلس

:QSqlFieldکلس

:توصیف کلس ها را دستکاری میکند.viewاین کلس فیلدهای درون جداول و یا

را ارایه میدهد,همانند نوع داده و اسم فیلد.یک فیلد همچنین شاملviewاین کلس مشخصات یک ستون تنها درون یک جدول و یا یک مقداری میباشد که درون آن ذخیره است.

Object های این کلس به طور نادر ساخته میشوند.و این کلس به طور غیر مستقیم از طریق کلسQSqlRecordاستفاده میشوند.همانند تکه کد زیر:

QSqlQuery query;..................QSqlRecord record = query.record();QSqlField field = record.field("country");

این کلس با دادههای یک بانک کاری ندارد.اصل موضوعه فراهم آوردن اطلعاتی فرا-دادهای راجعبه فیلدها میباشد.

:انواع عمومی • enum RequiredStatus { Required, Optional, Unknown }

:توابع عمومی• QSqlField ( const QString & fieldName = QString(), QVariant::Type type = QVariant::Invalid )

• QSqlField ( const QSqlField & other )

• ~QSqlField ()

• void clear ()

• QVariant defaultValue () const

• bool isAutoValue () const

• bool isGenerated () const

• bool isNull () const

• bool isReadOnly () const

116

Page 117: مروری بر کلاسهای Qt

:QSqlFieldکلس

• bool isValid () const

• int length () const

• QString name () const

• int precision () const

• RequiredStatus requiredStatus () const

• void setAutoValue ( bool autoVal )

• void setDefaultValue ( const QVariant & value )

• void setGenerated ( bool gen )

• void setLength ( int fieldLength )

• void setName ( const QString & name )

• void setPrecision ( int precision )

• void setReadOnly ( bool readOnly )

• void setRequired ( bool required )

• void setRequiredStatus ( RequiredStatus required )

• void setType ( QVariant::Type type )

• void setValue ( const QVariant & value )

• QVariant::Type type () const

• QVariant value () const

• bool operator!= ( const QSqlField & other ) const

• QSqlField & operator= ( const QSqlField & other )

• bool operator== ( const QSqlField & other ) const

enum QSqlField::RequiredStatus

117

Page 118: مروری بر کلاسهای Qt

:QSqlFieldکلس

اجباری یا اختیاری بودن فیلد را تعیین میکند.enumاین

ثابت مقدار توصیفQSqlField::Required 1 میشوند فیلد مورد نظر باید معلوم باشد.insertهنگامی که رکورد ها

QSqlField::Optional 0 میشوند فیلد مورد نظر معلوم نیست.insertهنگامی که رکورد ها

QSqlField::Unknown -1 درایور بانک نمیتواند اختیاری یا واجب بودن فیلد را تعیین کند.

118

Page 119: مروری بر کلاسهای Qt

:QSqlTableModelکلس

:QSqlTableModelکلس

:توصیف کلساین کلس یک مدل اطلعات قابل ویرایش برای جدول یک بانک فراهم میکند.

)QSqlQueryاین کلس یک واسط سطحح بال برای خواندن و نوشتن رکوردهای یک بانک میباشد.این بر روی کلسی سطح پایین ( استفاده شود.برای مثال به تکه کد زیر دقت کنید:QTableViewساخته میشود و میتواند برای نمایش اطالعات همانند

QSqlTableModel *model = new QSqlTableModel;model->setTable("employee");model->setEditStrategy(QSqlTableModel::OnManualSubmit);model->select();model->removeColumn(0); // don't show the IDmodel->setHeaderData(0, Qt::Horizontal, tr("Name"));model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

QTableView *view = new QTableView;view->setModel(model);view->show();

در این کد در ابتدا نام جدول و استراتژی ویرایش را تنظیم میکنیم.آنگاه برچسبهای به نمایش درآمده را تنظیم میکنیم.استراتژی ی که در حقیقت در بانک به کار رفته , دیکته میشود.مقدارهای ممکن سه مقدارviewویرایش هنگامی که تغییرات توسط کاربر در

OnFieldChange,OnRowChange و OnManualSubmit.میباشند

دسترسی داشته باشد.نمونه کد زیر مثالی از گفته فوق میباشد:modelاین کلس میتواند به بانک بدون داشتن

QSqlTableModel model;model.setTable("employee");QString name = model.record(4).value("name").toString();

:انواع عمومی • enum EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit }

:توابع عمومی• QSqlTableModel ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() )

119

Page 120: مروری بر کلاسهای Qt

:QSqlTableModelکلس

• virtual ~QSqlTableModel ()

• QSqlDatabase database () const

• EditStrategy editStrategy () const

• int fieldIndex ( const QString & fieldName ) const

• QString filter () const

• bool insertRecord ( int row, const QSqlRecord & record )

• virtual bool insertRows ( int row, int count, const QModelIndex & parent = QModelIndex() )

• bool isDirty ( const QModelIndex & index ) const

• QSqlIndex primaryKey () const

• virtual bool removeColumns ( int column, int count, const QModelIndex & parent = QModelIndex() )

• virtual bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() )

• virtual void revertRow ( int row )

• virtual bool select ()

• virtual bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )

• virtual void setEditStrategy ( EditStrategy strategy )

• virtual void setFilter ( const QString & filter )

• bool setRecord ( int row, const QSqlRecord & record )

• virtual void setSort ( int column, Qt::SortOrder order )

• virtual void setTable ( const QString & tableName )

• virtual void sort ( int column, Qt::SortOrder order )

• QString tableName () const

120

Page 121: مروری بر کلاسهای Qt

:QSqlTableModelکلس

به ارث گرفته شدهاند.QSqlQueryModel تابع عمومی از۱۵

به ارث گرفته شده است.QAbstractTableModel تابع عمومی از۱

به ارث گرفته شدهاند.QAbstractItemModel تابع عمومی از۳۲

به ارث گرفته شدهاند.QObject تابع عمومی از۲۸

Slot های عمومی:• virtual void revert ()

• void revertAll ()

• virtual bool submit ()

• bool submitAll ()

۲ slotعمومی از QAbstractItemModel.به ارث گرفته شدهاند

۱ slot عمومی از QObject.به ارث گرفته شده است

Signals ها :• void beforeDelete ( int row )

• void beforeInsert ( QSqlRecord & record )

• void beforeUpdate ( int row, QSqlRecord & record )

• void primeInsert ( int row, QSqlRecord & record )

۱۲ signal از QAbstractItemModel.به ارث گرفته شدهاند

۱۲ signal از QObject.به ارث گرفته شده است

:protectedتوابع • virtual bool deleteRowFromTable ( int row )

121

Page 122: مروری بر کلاسهای Qt

:QSqlTableModelکلس

• QModelIndex indexInQuery ( const QModelIndex & item ) const

• virtual bool insertRowIntoTable ( const QSqlRecord & values )

• virtual QString orderByClause () const

• virtual QString selectStatement () const

• void setPrimaryKey ( const QSqlIndex & key )

• void setQuery ( const QSqlQuery & query )

• virtual bool updateRowInTable ( int row, const QSqlRecord & values )

به ارث گرفته شدهاند.QSqlQueryModel ازprotected تابع ۳

به ارث گرفته شدهاند.QAbstractItemModel ازprotected تابع ۱۳

به ارث گرفته شدهاند.QObject ازprotected تابع ۱۷

:عضوهای به ارث گرفته شده افزوده به ارث گرفته شده است.QObject متغیر از۱

به ارث گرفته شده است.QObject ازstatic عضو عمومی ۴

122

Page 123: مروری بر کلاسهای Qt

را کامپایل کنیم؟Qtچگونه برنامههای :۰ضمیمه شماره

را کامپایل کنیم؟Qt:چگونه برنامههای ۰ضمیمه شماره مینامند.کار اصلی اینconfigureدر هر برنامه که میخواهیم آنرا کامپایل کنیم یک برنامه وجود دارد که اکثر برنامهنویسان اسم فایل آن را

برنامه در درجه اول یک سری چک کردن است.و در درجه دوم بر مبنای چیزهایی که وجود دارد و یا برنامه به آنها نیاز دارد یک فایل با نامMakefile میسازد.و در آن چیزهایی مثل مسیر کتابخانهها,مسیر include.فایلها و غیره را جای میدهد

خود لینوکس استفاده میکند.و با خواندن این فایل میفهمد که چه فایلهایی را باید با چهmakeآنگاه کاربر برای کامپایل برنامه از دستور ویژگیهایی کامپایل کند.

configure اگر دو مرحله زیر را انجام دهید, دیگر نیازی به اجرای فایل configure برای مرحله اول یعنی اجرای فایل Qtحال در برنامههای نخواهید داشت:

qmake -project

qmake

Makefile بدون آرگومان یک qmake. ایجاد میکنید.سپس با اجرای proدر دستور اولی شما یک فایل با نام دایرکتوری جاری با پسوند میسازید.

آن را کامپایل کنید.make ایجاد شد شما میتوانید با دستور Makefileحال که

123

Page 124: مروری بر کلاسهای Qt

Qtیونیکد در :۱ضمیمه شماره

Qt:یونیکد در ۱ضمیمه شماره Qt:شرایط زیر را برای استفاده از یونیکد فراهم کرده است

انجام میشود.QTextStream و QTextCodec فایلها که توسط دو کلس IO برایencodingبرگرداندن انواع ●

بیتی صفحه کلید.۸تبدیل از متدهای ورودی و ورودی ●

تبدیل به هر کارکترست برای نمایش بر روی صفحه.●

کهCفراهم دیدن یک کلس که بر روی رشتهها کار میکند.و کارکترها را با در نظر گرفتن حمایت مهاجرت از رشتههای ● میشوند و اغلب اعمال رشتهها را انجام میدهند.US-ASCIIشامل برگرداندن سریع از/به

حتی بر روی بسترهای ویندوزی که آن را پشتیبانی نمیکند نیز حمایتQtیونیکد بر روی پنجرهها نیز پستیبانی میشود. ●میشود.

,پیشنهاد میکنیم که تمام رشتههایی را که قرار است بر روی صفحه نمایش ظاهر شوند بهQtبرای به طور کامل سود بردن از یونیکد در استفاده شود.QTextStrem ذخیره نمایید.همچنین برای نوشتن بر روی فایلهای متنی از QStringصورت رشتههای

تمام پارامترهای یک تابع ممکن است قابل نمایش برای کاربر باشند.به عنوان مثال تیتر یک پنجره و یا متنی درون پنجره باشند.

QLabel::setText و خیلی دیگر از توابع از این نوع پارامترها میگیرند.همه آنها از نوع const QString &var.استفاده مینمایند QString * انجام میدهد.پس چیزی شبیه به زیر کار خواهد کرد:const charیک عمل تبدیل نوع اجباری را از

label->setText("Password:");

وجود دارند که به منظور ترجمه به کار میروند استفاده میشوند.درQObject::trهمچنین, توابعی برای آمادهسازی یک رشته همانند تابع واقع خط بال را شما میتوانید به صورت کاملی مانند زیر بنویسید:

label->setText(tr("Password:"));

استفاده کنید:trUtf8 قدرت آن را ندارد و در عوض باید از tr به صفحه نمایش بکشید,تابع UTF-8اگر خواستید تا

label->setText(trUtf8("Password:"));

استفاده میشود.QTranslator میکنند.و برای این کار از map* به یک رشته یونیکدی const char هر دو از trUtf8 و trتابع

Qt چندین کلس درون-ساخت QTextCodec را ایجاد میکند.بنابراین , کلسها دیگر میدانند که چگونه بین یونیکد و encodingقبلی داشته باشد.write و read قبلی چگونه encodingارتباط داشته باشد.و یا بین یونیکد و فایلهایی با

که وابسته به منطقه جغرافیایی خاصی است استفاده میشود.اگر چهcodecc * توسط یک const charبه صورت پیشفرض, تبدیل از/به ی خاصcodec ها رو برای هر منطقه پیدا کنند و هر فایل یا اتصال شبکهای که باز میشود را برای codecبرنامه ها میتوانند به سادگی

جدید نصب نمایید.codecاستفاده نمایند.همچنین شما میتوانید یک

124

Page 125: مروری بر کلاسهای Qt

Qtیونیکد در :۱ضمیمه شماره

فایلها وجود دارد.به عنوان مثال برای باز کردن یک فایل آیکون میتوانید از یکی از دو خط زیر استفادهmappingتعدادی تابع سریع برای نمایید:

QFile file(QString::fromLatin1("appicon.png"));

یا

QFile file(QLatin1String("appicon.png"));

125

Page 126: مروری بر کلاسهای Qt

فارسینویسی : ۲ضمیمه شماره

: فارسینویسی۲ضمیمه شماره میباشد.utf-8برای فارسینویسی بهترین گزینه استفاده از کارکترست

نیاز به کمی تغییر دارید تا برنامه به شما بد فونت نشان ندهد.

استفاده کنید.در واقع شما یک حافظه برای رشته خود در نظرQByteArray و QTextCodecبرای رفع این مشکل شما باید از کلس ی تبدیل میکنید.Encodingمیگیرید و آن را به هر

نکته :

!UTF-8 استفاده میکند نه UTF-16 از QStringتوجه داشته باشید که

لطفا به برنامه زیر دقت کنید :

1#include <QtGui>

2#include <QtCore>

3#include <QLabel>

4int main(int argc,char *argv[])

5{

6QString encodingstr(QByteArray string);

7 QApplication *my=new QApplication(argc,argv);

8 QMainWindow x;

9 QLabel *ee=new QLabel(encodingstr(" 0سلم !"), );

10 x.setCentralWidget(ee);

11 x.show();

12 return my->exec();

13}//end of main program

14QString encodingstr(QByteArray string)

15{

16 QByteArray encodedString = string;

17 QTextCodec *codec = QTextCodec::codecForName("UTF-8");

126

Page 127: مروری بر کلاسهای Qt

فارسینویسی : ۲ضمیمه شماره

18 return codec->toUnicode(encodedString);

19}

QLabel که خودمان نوشتیم, یک رشته را برای کلس encodingstrبیایید برنامه را بررسی کنیم.شما اگر میخواستید به جای تابع و یونیکدQStringمینوشتید, در خروجی به شما بد فونت نشان میداد.ولی تابع مذکور که نوشتیم یک رشته را میگیرد و آن را از نوع

شده به شما تحویل میدهد.

خود تابع :

که محتویات این حافظه , رشتهencodedString که چند بایت برای شما فراهم میکند را تعریف میکنیم به نام QByteArrayیک شی از ما میباشد.

تعریف کرده و به آن میگوییم که رشته را به چه فرمتی تبدیل کنیم.شما میتوانید لیستQTextCodecسپس یک شی دیگر از نوع coding:ها را در زیر ببینید

• Big5

• Big5-HKSCS

• EUC-JP

• EUC-KR

• GB18030-0

• IBM 850

• IBM 866

• IBM 874

• ISO 2022-JP

• ISO 8859-1 to 10

• ISO 8859-13 to 16

• Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml

• JIS X 0201

• JIS X 0208

• KOI8-R

127

Page 128: مروری بر کلاسهای Qt

فارسینویسی : ۲ضمیمه شماره

• KOI8-U

• MuleLao-1

• ROMAN8

• Shift-JIS

• TIS-620

• TSCII

• UTF-8

• UTF-16

• UTF-16BE

• UTF-16LE

• Windows-1250 to 1258

• WINSAMI2

toUnicode پاس میشوند.آنگاه رشته مربوطه را به تابع QTextCodec::codecForName ها به صورت پارامتر به تابع codingکه این ی که میخواهیم باز میگردد.)encodingارسال میکنیم که همان رشته را برای تابع برمیگردانیم.(البته با

crash بیشتر شود تابع QByteArray میباشد.زیرا اندازه رشته نا مشخص است.,و اگر رشته از طول crashتابع مذکور دارای نکته : با فرمت زیر استفاده نمایید:toUnicodeمیکند.برای رفع آن میتوانید ازهمان تابع

QString QTextCodec::toUnicode ( const char * input, int size, ConverterState * state = 0 ) const

:نکته مهندسی نرمافزار

همیشه در برنامه نویسی چند زبانه زمانی که میخواهید از رشته در جایی استفاده کنید نیاز به تصمیم گیری دارید که از چه زبانی استفاده را دارا میباشد.اما تابعیutf8 برمیگرداند.ولی همان مشکل QString وجود دارد که tr تابعی به نام Qtشود.و رشتهها از کجا خوانده شوند.در

میباشند.زمانی که از تابعQObject یونیکد کار میکند.هر دوی این توابع عضو کلس coding نیز وجود دارد که با trUtf8دیگر با نام trUtf8.استفاده کنید, دیگر نیازی به تابعی که نوشتیم نخواهید داشت

وجود دارد.trUtf8 آشنا شوید.و اگر نه تابعی مثل encoding و انواع conversationبرای این تابع را نوشتیم که با

GTK و Qt:

GTK از تمرکزگرایی در استفاده از یونیکد بهره میگیرد.در صورتی که Qtاینگونه نمیباشد و ممکن است در کلس و یا تابعی خاص به ها رفتار میشود.بیایید این را کمی باز کنیم:encodingگونهای دیگر با

128

Page 129: مروری بر کلاسهای Qt

فارسینویسی : ۲ضمیمه شماره

نمیتوانید آن راQLabel تولید میکند ولی در عوض برای چاپ آن در کلس UTF را میبینید که فقط QStringشما کلسی مثل های موجود!encoding به صفحه نمایش بکشید.این یعنی عدم تمرکز در استفاده از UTFپیشفرض

:نکته

در استفاده از یونیکد میباشد.که این نوعQt در مورد فارسی کار نمیکند.اینگونه موارد مربوط به پراکندگی toUpper و toLowerدو تابع موارد کم نمیباشند.

129

Page 130: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

widget:یک مثال از چند ۳ضمیمه .Help و Edit ,View منو دارید به نامهای ۳در این برنامه شما

این منوها هیچ کاری برای شما انجام نمیدهند.هرکدام چند زیر منو دارند که هر وقت بر روی هر زیرمنو کلیک کنید نام آن بر روی صفحه ها نوشته شده است.Actionنوشته میشود.توضیحات برنامه در لبلی خطوط میباشد.این برنامه صرفا برای یادگیری کار با منوها و

/////////////////////////////////mainwindow.h file/////////////////////////////////////////////

1 #ifndef MAINWINDOW_H

2 #define MAINWINDOW_H

3 #include <QMainWindow>

4 class QAction;

5 class QActionGroup;

6 class QLabel;

7 class QMenu;

8 class MainWindow : public QMainWindow

9 {

را۸ ها , یک کلس از آنها مشتق میکنیم و در سازنده آن است که اصل کار را تعریف میکنیم.خط widgetهمیشه برای استفاده کامل از که تنها راه دیدن یک پیجره جدید مشتق کردن از آن است.QMainWindowببینید.مخصوصا کلس

10 Q_OBJECT

11 public:

12 MainWindow();

13 protected:

14 void contextMenuEvent(QContextMenuEvent *event);

130

Page 131: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

15 private slots:

16 void newFile();

17 void open();

18 void save();

19 void print();

20 void undo();

21 void redo();

22 void cut();

23 void copy();

24 void paste();

25 void bold();

26 void italic();

27 void leftAlign();

28 void rightAlign();

29 void justify();

30 void center();

31 void setLineSpacing();

32 void setParagraphSpacing();

33 void about();

34 void aboutQt();

35 private:

36 void createActions();

37 void createMenus();

38 QMenu *fileMenu;

39 QMenu *editMenu;

40 QMenu *formatMenu;

131

Page 132: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

41 QMenu *helpMenu;

42 QActionGroup *alignmentGroup;

43 QAction *newAct;

44 QAction *openAct;

45 QAction *saveAct;

46 QAction *printAct;

47 QAction *exitAct;

48 QAction *undoAct;

49 QAction *redoAct;

50 QAction *cutAct;

51 QAction *copyAct;

52 QAction *pasteAct;

53 QAction *boldAct;

54 QAction *italicAct;

55 QAction *leftAlignAct;

56 QAction *rightAlignAct;

57 QAction *justifyAct;

58 QAction *centerAct;

59 QAction *setLineSpacingAct;

60 QAction *setParagraphSpacingAct;

61 QAction *aboutAct;

62 QAction *aboutQtAct;

63 QLabel *infoLabel;

64 };

65 #endif

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

132

Page 133: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

/////////////////////////////////////////////mainwindow.cpp file//////////////////////////////////////////////////////////////////

1 #include <QtGui>

2 #include "mainwindow.h"

3 MainWindow::MainWindow()

4 {

5 QWidget *w = new QWidget;

6 setCentralWidget(w);

اصلی پنجره قرار دادهایم.widget تعریف شده و آن را widget یک۶ و ۵در خط

7 QWidget *topFiller = new QWidget;

8 topFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

9 infoLabel = new QLabel(tr("<i>Choose a menu option, or right-click to "

"invoke a context menu</i>"));

10 infoLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);

11 infoLabel->setAlignment(Qt::AlignCenter);

صفحه راStyle نوع setFrameStyle به کاربر میگوییم که یک منو انتخاب کند و یا کلیک راست منو را فشار دهد.با ۹ خط QLabelبا نقطه چاپ را مشخص کردیم.setAlignmentمشخص کردیم.و با

12 QWidget *bottomFiller = new QWidget;

13 bottomFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

14 QVBoxLayout *vbox = new QVBoxLayout;

15 vbox->setMargin(5);

16 vbox->addWidget(topFiller);

17 vbox->addWidget(infoLabel);

133

Page 134: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

18 vbox->addWidget(bottomFiller);

19 w->setLayout(vbox);

addWidget ها را پشت سر هم و عمود میچیند.با این کار و تابع widget تعریف کردیم.این کلس QVBoxLayout یک شی از ۱۴در خط های تعریف شده را پشت سر هم میچینیم. widget بار تکرار شده , ۳که

20 createActions();

های منو را تعریف میکند.Action های برنامه به غیر از Action که در زیر آنرا تعریف و در اینجا آن را صدا زدیم , createActionتابع

21 createMenus();

در این تابع هم منوی بالی صفحه با زیرمنوهایش و هم منویی که با راست کلیک کردن ایجاد میشود را میسازیم.

22 statusBar()->showMessage(tr("A context menu is available by right-clicking"));

در تابع بال بک متن اولیه نمایش میدهیم.

23 setWindowTitle(tr("Menus"));

24 setMinimumSize(160, 160);

25 resize(480, 320);

26 }

27 void MainWindow::contextMenuEvent(QContextMenuEvent *event)

28 {

29 QMenu menu(this);

30 menu.addAction(cutAct);

31 menu.addAction(copyAct);

32 menu.addAction(pasteAct);

33 menu.exec(event->globalPos());

با این تابع منویی که با کلیک راست ایجاد میشود را میسازیم.(البته در موقعیت مکانی که به آن به صورت پارامتر پاس میکنیم.)

34 }

برای نمایش متن مورد نظر منوی خود در وسط صفحه ایجاد شده است.slot های زیر دقت کنید, هر slotاگر در

134

Page 135: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

را انتخاب کنیم.File>Newاسلت زیر هنگامی درگیر می شود که منوی

35 void MainWindow::newFile()

36 {

37 infoLabel->setText(tr("Invoked <b>File|New</b>"));

38 }

را انتخاب کنیم.File>Openاسلت زیر هنگامی درگیر می شود که منوی

39 void MainWindow::open()

40 {

41 infoLabel->setText(tr("Invoked <b>File|Open</b>"));

42 }

را انتخاب کنیم.File>Saveاسلت زیر هنگامی درگیر می شود که منوی

43 void MainWindow::save()

44 {

45 infoLabel->setText(tr("Invoked <b>File|Save</b>"));

46 }

را انتخاب کنیم.File>Printاسلت زیر هنگامی درگیر می شود که منوی

47 void MainWindow::print()

48 {

49 infoLabel->setText(tr("Invoked <b>File|Print</b>"));

50 }

را انتخاب کنیم.Edit>Undoاسلت زیر هنگامی درگیر می شود که منوی

51 void MainWindow::undo()

52 {

53 infoLabel->setText(tr("Invoked <b>Edit|Undo</b>"));

54 }

را انتخاب کنیم.Edit>Redoاسلت زیر هنگامی درگیر می شود که منوی

135

Page 136: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

55 void MainWindow::redo()

56 {

57 infoLabel->setText(tr("Invoked <b>Edit|Redo</b>"));

58 }

را انتخاب کنیم.Edit>Cutاسلت زیر هنگامی درگیر می شود که منوی

59 void MainWindow::cut()

60 {

61 infoLabel->setText(tr("Invoked <b>Edit|Cut</b>"));

62 }

را انتخاب کنیم.Edit>Copyاسلت زیر هنگامی درگیر می شود که منوی

63 void MainWindow::copy()

64 {

65 infoLabel->setText(tr("Invoked <b>Edit|Copy</b>"));

66 }

را انتخاب کنیم.Edit>Pasteاسلت زیر هنگامی درگیر می شود که منوی

67 void MainWindow::paste()

68 {

69 infoLabel->setText(tr("Invoked <b>Edit|Paste</b>"));

70 }

را انتخاب کنیم.Edit>Format>Boldاسلت زیر هنگامی درگیر می شود که منوی

71 void MainWindow::bold()

72 {

73 infoLabel->setText(tr("Invoked <b>Edit|Format|Bold</b>"));

74 }

را انتخاب کنیم.File>Newاسلت زیر هنگامی درگیر می شود که منوی

75 void MainWindow::italic()

136

Page 137: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

76 {

77 infoLabel->setText(tr("Invoked <b>Edit|Format|Italic</b>"));

78 }

را انتخاب کنیم.Edit>Format>Italicاسلت زیر هنگامی درگیر می شود که منوی

79 void MainWindow::leftAlign()

80 {

81 infoLabel->setText(tr("Invoked <b>Edit|Format|Left Align</b>"));

82 }

را انتخاب کنیم.Edit>Format>Right Alignاسلت زیر هنگامی درگیر می شود که منوی

83 void MainWindow::rightAlign()

84 {

85 infoLabel->setText(tr("Invoked <b>Edit|Format|Right Align</b>"));

86 }

را انتخاب کنیم.Edit>Format>Justifyاسلت زیر هنگامی درگیر می شود که منوی

87 void MainWindow::justify()

88 {

89 infoLabel->setText(tr("Invoked <b>Edit|Format|Justify</b>"));

90 }

را انتخاب کنیم.Edit>Format>Centerاسلت زیر هنگامی درگیر می شود که منوی

91 void MainWindow::center()

92 {

93 infoLabel->setText(tr("Invoked <b>Edit|Format|Center</b>"));

94 }

را انتخاب کنیم.Edit>Format<Set Line Spacingاسلت زیر هنگامی درگیر می شود که منوی

95 void MainWindow::setLineSpacing()

96 {

137

Page 138: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

97 infoLabel->setText(tr("Invoked <b>Edit|Format|Set Line Spacing</b>"));

98 }

را انتخاب کنیم.Edit>Format>Set Paragraph Spacingاسلت زیر هنگامی درگیر می شود که منوی

99 void MainWindow::setParagraphSpacing()

100 {

101 infoLabel->setText(tr("Invoked <b>Edit|Format|Set Paragraph Spacing</b>"));

102 }

را انتخاب کنیم.Help>Aboutاسلت زیر هنگامی درگیر می شود که منوی

103 void MainWindow::about()

104 {

105 infoLabel->setText(tr("Invoked <b>Help|About</b>"));

106 QMessageBox::about(this, tr("About Menu"),

107 tr("The <b>Menu</b> example shows how to create "

108 "menu-bar menus and context menus."));

109 }

را انتخاب کنیم.Help>About Qtاسلت زیر هنگامی درگیر می شود که منوی

110 void MainWindow::aboutQt()

111 {

112 infoLabel->setText(tr("Invoked <b>Help|About Qt</b>"));

113 }

114 void MainWindow::createActions()

115 {

116 newAct = new QAction(tr("&New"), this);

117 newAct->setShortcut(tr("Ctrl+N"));

118 newAct->setStatusTip(tr("Create a new file"));

138

Page 139: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

119 connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));

120 openAct = new QAction(tr("&Open..."), this);

121 openAct->setShortcut(tr("Ctrl+O"));

122 openAct->setStatusTip(tr("Open an existing file"));

123 connect(openAct, SIGNAL(triggered()), this, SLOT(open()));

124 saveAct = new QAction(tr("&Save"), this);

125 saveAct->setShortcut(tr("Ctrl+S"));

126 saveAct->setStatusTip(tr("Save the document to disk"));

127 connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));

128 printAct = new QAction(tr("&Print..."), this);

129 printAct->setShortcut(tr("Ctrl+P"));

130 printAct->setStatusTip(tr("Print the document"));

131 connect(printAct, SIGNAL(triggered()), this, SLOT(print()));

132 exitAct = new QAction(tr("E&xit"), this);

133 exitAct->setShortcut(tr("Ctrl+Q"));

134 exitAct->setStatusTip(tr("Exit the application"));

135 connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));

136 undoAct = new QAction(tr("&Undo"), this);

137 undoAct->setShortcut(tr("Ctrl+Z"));

138 undoAct->setStatusTip(tr("Undo the last operation"));

139 connect(undoAct, SIGNAL(triggered()), this, SLOT(undo()));

139

Page 140: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

140 redoAct = new QAction(tr("&Redo"), this);

141 redoAct->setShortcut(tr("Ctrl+Y"));

142 redoAct->setStatusTip(tr("Redo the last operation"));

143 connect(redoAct, SIGNAL(triggered()), this, SLOT(redo()));

144 cutAct = new QAction(tr("Cu&t"), this);

145 cutAct->setShortcut(tr("Ctrl+X"));

146 cutAct->setStatusTip(tr("Cut the current selection's contents to the "

"clipboard"));

147 connect(cutAct, SIGNAL(triggered()), this, SLOT(cut()));

148 copyAct = new QAction(tr("&Copy"), this);

149 copyAct->setShortcut(tr("Ctrl+C"));

150 copyAct->setStatusTip(tr("Copy the current selection's contents to the "

"clipboard"));

151 connect(copyAct, SIGNAL(triggered()), this, SLOT(copy()));

152 pasteAct = new QAction(tr("&Paste"), this);

153 pasteAct->setShortcut(tr("Ctrl+V"));

154 pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "

"selection"));

155 connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste()));

156 boldAct = new QAction(tr("&Bold"), this);

157 boldAct->setCheckable(true);

140

Page 141: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

158 boldAct->setShortcut(tr("Ctrl+B"));

159 boldAct->setStatusTip(tr("Make the text bold"));

160 connect(boldAct, SIGNAL(triggered()), this, SLOT(bold()));

161 QFont boldFont = boldAct->font();

162 boldFont.setBold(true);

163 boldAct->setFont(boldFont);

164 italicAct = new QAction(tr("&Italic"), this);

165 italicAct->setCheckable(true);

166 italicAct->setShortcut(tr("Ctrl+I"));

167 italicAct->setStatusTip(tr("Make the text italic"));

168 connect(italicAct, SIGNAL(triggered()), this, SLOT(italic()));

169 QFont italicFont = italicAct->font();

170 italicFont.setItalic(true);

171 italicAct->setFont(italicFont);

172 leftAlignAct = new QAction(tr("&Left Align"), this);

173 leftAlignAct->setCheckable(true);

174 leftAlignAct->setShortcut(tr("Ctrl+L"));

175 leftAlignAct->setStatusTip(tr("Left align the selected text"));

176 connect(leftAlignAct, SIGNAL(triggered()), this, SLOT(leftAlign()));

177 rightAlignAct = new QAction(tr("&Right Align"), this);

178 rightAlignAct->setCheckable(true);

141

Page 142: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

179 rightAlignAct->setShortcut(tr("Ctrl+R"));

180 rightAlignAct->setStatusTip(tr("Right align the selected text"));

181 connect(rightAlignAct, SIGNAL(triggered()), this, SLOT(rightAlign()));

182 justifyAct = new QAction(tr("&Justify"), this);

183 justifyAct->setCheckable(true);

184 justifyAct->setShortcut(tr("Ctrl+J"));

185 justifyAct->setStatusTip(tr("Justify the selected text"));

186 connect(justifyAct, SIGNAL(triggered()), this, SLOT(justify()));

187 centerAct = new QAction(tr("&Center"), this);

188 centerAct->setCheckable(true);

189 centerAct->setShortcut(tr("Ctrl+E"));

190 centerAct->setStatusTip(tr("Center the selected text"));

191 connect(centerAct, SIGNAL(triggered()), this, SLOT(center()));

192 alignmentGroup = new QActionGroup(this);

193 alignmentGroup->addAction(leftAlignAct);

194 alignmentGroup->addAction(rightAlignAct);

195 alignmentGroup->addAction(justifyAct);

196 alignmentGroup->addAction(centerAct);

197 leftAlignAct->setChecked(true);

198 setLineSpacingAct = new QAction(tr("Set &Line Spacing..."), this);

199 setLineSpacingAct->setStatusTip(tr("Change the gap between the lines of a "

"paragraph"));

142

Page 143: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

200 connect(setLineSpacingAct, SIGNAL(triggered()), this, SLOT(setLineSpacing()));

201 setParagraphSpacingAct = new QAction(tr("Set &Paragraph Spacing..."), this);

202 setLineSpacingAct->setStatusTip(tr("Change the gap between paragraphs"));

203 connect(setParagraphSpacingAct, SIGNAL(triggered()),

this, SLOT(setParagraphSpacing()));

204 aboutAct = new QAction(tr("&About"), this);

205 aboutAct->setStatusTip(tr("Show the application's About box"));

206 connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));

207 aboutQtAct = new QAction(tr("About &Qt"), this);

208 aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));

209 connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));

210 connect(aboutQtAct, SIGNAL(triggered()), this, SLOT(aboutQt()));

211 }

212 void MainWindow::createMenus()

213 {

های مربوطه را تعریف کردیم.Actionدر این تابع منوی برنامه را ایجاد کرده و در آن

214 fileMenu = menuBar()->addMenu(tr("&File"));

215 fileMenu->addAction(newAct);

216 fileMenu->addAction(openAct);

217 fileMenu->addAction(saveAct);

218 fileMenu->addAction(printAct);

219 fileMenu->addSeparator();

143

Page 144: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

220 fileMenu->addAction(exitAct);

221 editMenu = menuBar()->addMenu(tr("&Edit"));

222 editMenu->addAction(undoAct);

223 editMenu->addAction(redoAct);

224 editMenu->addSeparator();

225 editMenu->addAction(cutAct);

226 editMenu->addAction(copyAct);

227 editMenu->addAction(pasteAct);

228 editMenu->addSeparator();

229 formatMenu = editMenu->addMenu(tr("&Format"));

230 formatMenu->addAction(boldAct);

231 formatMenu->addAction(italicAct);

232 formatMenu->addSeparator()->setText(tr("Alignment"));

233 formatMenu->addAction(leftAlignAct);

234 formatMenu->addAction(rightAlignAct);

235 formatMenu->addAction(justifyAct);

236 formatMenu->addAction(centerAct);

237 formatMenu->addSeparator();

238 formatMenu->addAction(setLineSpacingAct);

239 formatMenu->addAction(setParagraphSpacingAct);

240 helpMenu = menuBar()->addMenu(tr("&Help"));

241 helpMenu->addAction(aboutAct);

242 helpMenu->addAction(aboutQtAct);

144

Page 145: مروری بر کلاسهای Qt

widgetیک مثال از چند :۳ضمیمه

243 }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////main.cpp file ///////////////////////////////////////////////////////////////////////////////

1 #include <QApplication>

2 #include "mainwindow.h"

3 int main(int argc, char *argv[])

4 {

5 QApplication app(argc, argv);

6 MainWindow window;

میکنیم.به همین سادگی.زیرا هر چه خواستهshow کلسی که تعریف صدا زده و آن را widget برنامه میباشد,فقط mainدر اینجا که بودیم در سازنده آن کلس مطرح کرده بودیم.

7 window.show();

8 return app.exec();

9 }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

نکته :

را خواننده گرامی درک کند.Actionدر این برنامه برای خطوط خالی شماره خط در نظر نگرفتهام.این برنامه فقط مثالی بود تا کار با منو و

145

Page 146: مروری بر کلاسهای Qt

:بین المللیسازی۴ضمیمه در زمینه بینالمللیسازی باید گفت که دو نوع از آن را میتوان یافت:

British به US.اختلف در لغات.مثل ۱

.Arabic به USها نیز دارای مشکل هستید و باید آن را عوض کنید مثل encoding.در این حالت شما در ۲

:trاستفاده از تابع

هرگاه که از متونی که داخل کوتیشن میگذارید,و در کل به منظور چاپ استفاده میشوند,قطعیت ببخشید که رشته شما توسطCoreApplication::translate پردازش میشود.ضرورتا به منظور پردازش توسط تابع مذکور , رشته را توسط تابع tr و یا trUtf8اخذ

که درLoginWidgetنمایید.یعنی هر جا که میخواهید از رشته استفاده کنید, آنرا داخل یکی از این دو تابع قرار دهید.برای مثال کلس نمیباشد. ) :Qt مشتق شده است(این کلس جزو کلسهای QWidgetزیر سازنده آنرا میبینید از

LoginWidget::LoginWidget(){QLabel *label = new QLabel(tr("Password:"));...}

استفاده از رشتههای قابل رویت برای کاربر به ترتیب بال خواهد بود.۹۹٪

استفاده کرد و یا مستقیما ازtr مشتق نشده است باشد, باید آن را با تابع QObjectاگر متن داخل کوتیشن عضو یک تابع از کلسی که از translate:استفاده کرد

146

Page 147: مروری بر کلاسهای Qt

بین المللیسازی:۴ضمیمه

void some_global_function(LoginWidget *logwid){QLabel *label = new QLabel(LoginWidget::tr("Password:"), logwid);}

void same_global_function(LoginWidget *logwid){QLabel *label = new QLabel(qApp->translate("LoginWidget", "Password:"), logwid);}

: برای مقدارهای شتابدهندهQKeySequenceاستفاده از

کردن از برنامه باquit نیاز دارند که ترجمه شوند.اگر شما برای Ctrl+Q یا Ctrl+Fمقدارهای شتابدهنده به عملیات با صفحه کلید همانند Qt::CTRL + Qt::Key_Q .به سختی کد دارید,مترجمها قادر به برگرداندن آن نخواهند بود

برای آن تعریف کنید باید به صورت زیر عمل کنید:event را بزنید تا بتوانید یک xبه عنوان مثال برای اینکه شما

exitAct = new QAction(tr("E&xit"), this);exitAct->setShortcut(tr("Ctrl+Q"));

: برای متون پویاQString::argاستفاده از

QString::arg :یک پیشنهاد ساده برای جانشینی آرگومانتها دارد

void FileCopier::showProgress(int done, int total,const QString &currentFile){label.setText(tr("%1 of %2 files copied.\nCopying: %3").arg(done).arg(total).arg(currentFile));}

در بعضی از زبانها ترتیب آرگومانها نیاز به تغییر دارند.و این به سادگی با عدد کنار % تغییر میکند.به تکه کد زیر دقت کنید:

147

Page 148: مروری بر کلاسهای Qt

بین المللیسازی:۴ضمیمه

QString s1 = "%1 of %2 files copied. Copying: %3";QString s2 = "Kopierer nu %3. Av totalt %2 filer er %1 kopiert.";

qDebug() << s1.arg(5).arg(10).arg("somefile.txt");qDebug() << s2.arg(5).arg(10).arg("somefile.txt");

خروجی برنامه بال به شکل زیر خواهد بود:

5 of 10 files copied. Copying: somefile.txtKopierer nu somefile.txt. Av totalt 10 filer er 5 kopiert.

بدینگونه شما متنی پویا خواهید داشت!

:ترجمه خروجی

سه مرحله دارد :Qtترجمه یک برنامه نوشته شده با

بیرونC تغییر کرده است.این فایل متن قابل ترجمه را از سورس کدهای lupdate-qt4 به ۴ نسخه Qt را اجرا کنید که برای lupdate.فایل ۱ مشخص میشوند را به روز میکند.tsمیکشد.و فایلهای ترجمه شما را که با پسوند

میباشند,شما میتوانید آنها را دستی ویرایش کنید.xml فایلها به صورت ts فایل تهیه کنید.و از آن موقع که ts.یک ۲

شناختهqm را اجرا کنید.این فایل ها با پسوند lrelease فایل استخراج کنید کافیست فایل ts.اگر میخواهید یک فایل پیغامی از یک ۳ ها میباشد نه مترجمین!enduser فایلها برای qmمیشوند.در واقع

ساخته میشودqmake -project مشخص میشود و با دستور proقبل از اجرای دو فایل مذکور شما باید در فایل پروژه خود که با پسوند متغیر زیر را اضافه کنید.و محتویات آن بستگی به برنامه شما دارد.۴خطوط زیر را اضافه کنید.البته حتما

HEADERS = funnydialog.h \ wackywidget.hSOURCES = funnydialog.cpp \ main.cpp \ wackywidget.cppFORMS = fancybox.uiTRANSLATIONS = superapp_dk.ts \ superapp_fi.ts \ superapp_no.ts \ superapp_se.ts

148

Page 149: مروری بر کلاسهای Qt

بین المللیسازی:۴ضمیمه

اجرا گردد تا فایلهای ترجمه به زبان کاربر تخصیص داده شوند.و نصب آنها توسطQTranslator::loadدر برنامه شما,باید QCoreApplication::installTranslator .میگیرد

149


Top Related