لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش توابع Qt قسمت ششم
2004-08-26, 03:20 AM,
ارسال : #1
آموزش توابع Qt قسمت ششم
فصل ششم : Building Blocks Galore!

اين مثال چگونگي بسته بندي دو شيء را در يك مؤلفه جديد و همچنين آساني استفاده از تعداد زيادي شيء را نشان مي دهد. در ابتدا ما از يك شيء سفارشي به عنوان يك فرزند استفاده مي كنيم.
[ltr]
کد :
#include     <qapplication.h>
#include     <qpushbutton.h>
#include     <qslider.h>
#include     <qlcdnumber.h>
#include     <qfont.h>
#include     <qvbox.h>
#include     <qgrid.h>

class      LCDRange   :    public    QVBox;
{
    public :
        LCDRange ( QWidget     *parent = 0 , const   char    *name = 0 );
};

LCDRange::LCDRange ( QWidget     *parent , const    char    *name )  :  QVBox ( parent , name )
{
    QLCDNumber      *lcd = new     QLCDNumber ( 2 , this , “lcd” );
    QSlider     *slider = new     QSlider ( Horizontal , this , “slider” );
    slider -> setRange ( 0 , 99 );
    slider -> setValue ( 0 );
    connect ( slider , SIGNAL ( valueChanged ( int  ) ) , lcd , SLOT ( display ( int ) ) );
}

class      MyWidget     :     public     QVBox;
{
    public :
        MyWidget ( QWidget       *parent = 0 , const    char    *name = 0 );
};

MyWidget::MyWidget ( QWidget     *parent , const   char    *name )   :   QVBox ( parent , name )
{
    QPushButton       *quit = new      QPushButton ( “Quit” , this , “quit” );
quit -> setFont ( QFont ( “Times” , 18 , QFont::Bold ) );
connect ( quit , SIGNAL ( clicked ( ) ) , qApp , SLOT ( quit ( ) ) );
QGrid      *grid = new      QGrid ( 4 , this );
for  ( int   r = 0 ;  r < 4 ; r ++ )
    for  ( int   c = 0 ; c < 4 ; c ++ )
        (void) new  LCDRange ( grid ) ;
}

int      main ( int     argc , char    **argv )
{
    QApplication     a ( argc , argv );
MyWidget     w;
a.setMainWidget ( &w );
w.show ( );
return      a.exec( );
}
[/ltr]
بررسي خط به خط برنامه :
[ltr]
کد :
class     LCDRange    :    public    QVBox
{
    public :
        LCDRange ( QWidget     *parent = 0 , const   char   *name = 0 );
};
[/ltr]
شيء LCDRange يك شيء بدون هيچگونه API است. فقط يك سازنده دارد. اين گونه شيء خيلي مفيد نيست، بنابراين ما چند API را به آن اضافه خواهيم كرد.
[ltr]
کد :
LCDRange::LCDRange ( QWidget     *parent , const    char    *name )  :  QVBox ( parent , name )
{
    QLCDNumber      *lcd = new     QLCDNumber ( 2 , this , “lcd” );
    QSlider     *slider = new     QSlider ( Horizontal , this , “slider” );
    slider -> setRange ( 0 , 99 );
    slider -> setValue ( 0 );
    connect ( slider , SIGNAL ( valueChanged ( int  ) ) , lcd , SLOT ( display ( int ) ) );
}
[/ltr]
اين قسمت مستقيماً ازسازنده MyWidget در فصل پنجم بلند شده است. تنها فرق آنها اين است كه دكمه از آن برداشته شده و نام كلاس تغيير يافته است.
[ltr]
کد :
class      MyWidget     :     public     QVBox;
{
    public :
        MyWidget ( QWidget       *parent = 0 , const    char    *name = 0 );
};
[/ltr]
همچنين MyWidget هيچگونه APIاي ندارد به جز يك سازنده.
[ltr]
کد :
MyWidget::MyWidget ( QWidget     *parent , const   char    *name )   :   QVBox ( parent , name )
{
    QPushButton       *quit = new      QPushButton ( “Quit” , this , “quit” );
quit -> setFont ( QFont ( “Times” , 18 , QFont::Bold ) );
connect ( quit , SIGNAL ( clicked ( ) ) , qApp , SLOT ( quit ( ) ) );
[/ltr]
دكمه فشاري كه از LCDRange تفكيك شده بود ، بنابراين حالا مي توانيم يك دكمه “Quit” و تعدادزيادي شيء LCDRange داشته باشيم.
[ltr]
کد :
QGrid      *grid = new      QGrid ( 4 , this );
[/ltr]
ما يك شيء QGrid با چهار ستون ساخته ايم. شيء QGrid بطور خودكار فرزندان خود را در رديفها و ستونها مرتب مي كند. شما مي توانيد تعداد سطروستونها را مشخص كنيد، و QGrid فرزندان جديد خود را پيدا خواهد كرد و آنها را در صفحه ( grid) جا مي دهد.
[ltr]
کد :
for  ( int   r = 0 ;  r < 4 ; r ++ )
    for  ( int   c = 0 ; c < 4 ; c ++ )
        (void) new  LCDRange ( grid ) ;
[/ltr]
چهار سطر و چهار ستون.ما 4*4 LCDRange ساخته ايم، كه هريك فرزندان شيء grid هستند. شيء QGrid آنها را مرتب خواهد كرد.
[ltr]
کد :
}
[/ltr]
تمامش اين بود.

عملكرد برنامه:
اين برنامه سادگي استفاده از تعدادزيادي شيء را در يك زمان نشان مي دهد.هريك مانند اسلايدر و LCDNumber فصل قبلي عمل مي كنند. دوباره، تفاوت در پياده سازي رخ داده است.

تمرينات :
هر اسلايدر را با يك مقدار مختلف/ تصادفي در لحظه بالا آمدن مقداردهي اوليه نماييد. عدد 4 سه بار در متن برنامه آمده است. اگر شما اولي را كه در فراخواني سازنده QGrid آمده است را تغيير دهيد چه اتفاقي مي افتد؟ چه اتفاقي براي دوتاي ديگر خواهد افتاد؟ چرا اينطور است؟
حالا شما براي فصل هفتم آماده هستيد.
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2004-09-09, 03:09 AM,
ارسال : #2
 
سلام
آقا خسته نباشی و دستت دردنکنه ، می دونم این جور مقاله نوشتن چقدر زحمت داره ، جدا دستت درد نکنه امید وارم برای دوستان هم مفید بوده باشه ...

[ltr]
$Nəvid$
In a world without any fences or walls,
Who needs gates or windows ?
گنو ایران | لیست مقالات فارسی گنو ایران |
[/ltr]
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2004-09-09, 08:29 AM,
ارسال : #3
 
دوست عزیز xigmacorporation خسته نباشید . ممکنه شما این مقالات رو بصورت pdf بدید ؟ که بچه ها اون رو دانلود کنند .. فکر می کنم اینطور بهتر باشه ..

[ltr]
Smashing all Kernel 2.x
[/ltr]
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2004-09-18, 09:03 AM,
ارسال : #4
 
باعرض سلام خدمت دوستان عزیز.
خوشحالم که این مقالات باعث رضایت شما عزیزان گشته است. باید بگویم که فعلا تلفن ما بعلت بدهی( :cry: :!: :mrgreen: :arrow: ) قطع است. الان هم دارم از کافی نت این ÷یغام رو می نویسم. ببخشید دیگه فعلا نمی تونم به کارم ادامه بدم. قسمت هشتم و نهم هم آماده است. ولی فکرنکنم بتونم اونا رو روی سایت بزارم. امروز هم رفتم دنبال دفترچه اعزام به خدمت!!!!
فعلا وضعیتم مشخص نیست. امیدوارم که بتونم خدمتم رو تمدید کرده و امسال در دانشگاه قبول شوم. آخه من 18 سال بیشتر ندارم و فعلا تحت تسلط خانواده می باشم. :wink:
از عزیزانی که می توانند این کار را ادامه دهند خواهش می کنم که مرا یاری نمایند.
همچنین از عزیزان خواهش می کنم مرا دعا کنند تا بتوانم امسال به دانشگاه بروم و باز هم در خدمت شما بزرگواران باشم.
با تشکر.
عضو کوچک خانواده technotux
xigmacorporation
نقل قول این ارسال در یک پاسخ
2004-09-18, 11:40 AM,
ارسال : #5
 
سربازي.. :cry:
آقا سعي کن دانشگاه قبول بشي...2 سال عمرت بيخودي هدر ميره :?
انشاا... که دانشگاه قبول ميشوي و به باز هم ما را با خوندن مقالات خوبت،خوشحال ميکني. Smile

لطفا قبل از اينکه سؤالات خود را در انجمن مطرح کنيد،‌حتما قوانين انجمن‌ها را مطالعه فرماييد.
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2004-09-18, 12:16 PM,
ارسال : #6
 
سلام
البته درسته که دو سال عمر آدم هدر می‌ره ولی خوب راه چاره‌ای نداره. من هم 10 ماه دیگه که دانشگاهم تموم بشه باید برم! البته سربازی رفتن بعد از دانشگاه یه کم مزیت داره‌ها! به خاطر همین برات دعا می‌کنم که به خواسته‌ات برسی.


irix@Hell:~$ mkfs -t Free /body/.mind && mount -o rw /body/.mind /FreeMind
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2004-12-25, 07:02 PM,
ارسال : #7
 
آقا منم سربازم ولی خدا کمک کرد الان بهتر از خانه امکانات زیر دستم نگران نباش خدا بزرگ اگه بخواد توهم رفیق شانس می آری
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان