青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Zero Lee的專欄

Qt GUI Programming Basic

 

QT GUI PROGRAMMING BASIC

=====================================================================

CHAPTER1 NOTES

=======================

THIS CHAPTER CONTAINS 3 CASES USING QT TOOLKIT.

 

CASE 1: HELLO QT

 

PROGRAM CODES:

===============

1 #include <qapplication.h>  

2 #include <qlabel.h>

3

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

5 {

6  QApplication app(argc, argv);

7  QLabel* label = new QLabel(“Hello Qt!”, 0);

8  app.setMainWidget(label);

9  label->show();

10  return app.exec();

11 }

 

EXPLANATION:

=============

1,2 >> HEADER FILES CONTAIN THE DEFINITION OF QAPPLICATION AND QLABEL CLASSES.

6 >> CREATE QAPPLICATION OBJECT TO MANAGE THE RESOURCE OF THIS APPLICATION. AND PARAMETERS ARE COMMAND LINE ARGUMENTS. HOWEVER, HERE CONSTRUCTOR IS ONE OF IT.

7 >> CREATE ONE QLABEL WIDGET THAT DISPLAY “HELLO QT!”. IN QT TERM, A WIDGET IS A VISUAL ELEMENT IN A USER INTERFACE. FOR EXAMPLE, BUTTON, MENU, SCOLLBAR, AND FRAMES ARE WIDGETS. CERTAINLY, WIDGETS CAN CONTAIN OTHER WIDGETS. HERE, THIS SECOND ARGUMENT 0 MEANS THAT THE LABEL WIDGET IS ONE WINDOW IN ITS OWN RIGHT, NOT A CHILD WIDGET INSIDE ANOTHER WINDOW. CREATE ONE QLABEL OBJECT, SYNTAX:

QLabel ( const QString & text, QWidget * parent, const char * name = 0, WFlags f = 0 );

8 >> MAKE THE LABEL WIDGET THE APP’S MAIN WIDGET. WITHOUT A MAIN WIDGET, THE PROGRAM WOULD KEEP RUNNING IN THE BACKGROUND EVEN AFTER USER HAS CLOSED THE WINDOW.

 

9 >> MAKE LABEL VISIBLE. SHOW FUNCTION IS NOT PUBLIC ONE OF QLABEL. IT IS INHERITED FROM QWIDGET CLASS. WIDGETS ARE ALWAYS CREATED HIDDEN, SO THAT WE CAN CUSTOMIZE THEM BEFORE SHOWING THEM.

10 >> RETURN CONTROL OF APP TO QT. AT THIS POINT, THE PROGRAM ENTERS A KIND OF STAND-BY MODE(DEAD-LOOP), WHERE IT WAITS FOR USER ACTIONS SUCH AS MOUSE CLICKS AND KEY PRESSES.

 

RUN RESULT:

===========

 

 

=====================================================================

CASE 2: QUIT APPLICATION

 

PROGRAM CODES:

================

1 #include <qapplication.h>

2 #include <qpushbutton.h>

3

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

5 {

6   QApplication app(argc, argv);

7   QPushButton* button = new QPushButton(“Quit”, 0);

8   QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));

9   app.setMainWidget(button);

10 button->show();

11 return app.exec();

12 }

 

EXPLANATION:

=============

1,2 >> HEADER FILES CONTAIN THE DEFINITION OF QAPPLICATION AND QPUSHBUTTON CLASSES.

7 >> CREATE ONE QPUSHBUTTON OBJECT WHOSE CAPTION IS “QUIT”. HERE, CONSTRUCTOR SYNTAX IS:

QPushButton ( const QString & text, QWidget * parent, const char * name = 0 )

SECOND ARGUMENT 0 MEANING IS SAME AS QLABEL IN THE CASE1.

8 >> QT’S WIDGETS EMIT SIGNALS TO INDICATE THAT A USER ACTION OR A CHANGE OF STATE HAS OCCURRED. FOR INSTANCE, HERE QPUSHBUTTON EMITS A CLICKED() SIGNAL WHEN USER CLICKS THE BUTTON. A SIGNAL CAN BE CONNECTED TO A FUNCTION (CALLED A SLOT IN THAT CONTEXT), SO THAT WHEN THE SIGNAL IS EMITTED, THE SLOT IS AUTOMATICALLY EXECUTED. HERE, WE CONNECT THE BUTTON’S CLICKED() SIGNAL TO THE QAPPLICATION OBJECT’S QUIT() SLOT. SIGNAL() AND SLOT() MACORS ARE PART OF THE SYNTAX. MORE INFO ABOUT THEIR MECHNISM, PLEASE TURN TO QT ASSISTANT.

CONNET FUNCTION INVOKED SYNTAX:

bool connect (const QObject * sender, const char * signal, const QObject * receiver, const char* member)

 

RUN RESULT:

===========

 

 

=====================================================================

CASE 3: AGE APPLICATION

 

PROGRAM CODES:

================

1 #include <qapplication.h>

2 #include <qhbox.h>

3 #include <qslider.h>

4 #include <qspinbox.h>

5

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

7 {

8   QApplication app(argc, argv);

9   QHBox* hbox = new QHBox(0);

10 hbox->setCaption(“Enter Your Age”);

11 hbox->setMargin(50);

12 hbox->setSpacing(20);

13 

14 QSpinBox* spinBox = new QSpinBox(hbox);

15 QSlider* slider = new QSlider(Qt::Horizontal, hbox);

16 spinBox->setRange(0, 130);

17 slider->setRange(0, 130);

18 

19 QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));

20 QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));

21 spinBox->setValue(35);

22

23 app.setMainWidget(hbox);

24 hbox->show();

25

26 return app.exec();

27 }

 

EXPLANATION:

=============

1,2,3,4 >> HEADER FILES CONTAIN DEFINITION OF QAPPLICATION, QHBOX, QSLIDER AND QSPINBOX CLASSES.

8 >> CREATE ONE QHBOX OBJECT. THE QHBOX WIDGET PROVIDES HORIZONTAL GEOMETRY MANAGEMENT OFR ITS CHILD WIDGETS. SYNTAX:

QHBox ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )

11, 12 >> USE SETMARGIN() TO ADD SPACE AROUND THE EDGES, AND USE SETSPACING() TO ADD SPACE BETWEEN THE WIDGETS(SPINBOX AND SLIDER).

 UNIT: PIXEL.

 

14, 15 >> CREATE CHILD WIDGETS IN QHBOX WIDGET. QSPINBOX AND QSLIDER.

WHEN CREATING QSPINBOX OBJECT, INVOKE THE FOLLOWING CONSTRUCOTR:

QSpinBox ( QWidget * parent = 0, const char * name = 0 );

WHEN CREATING QSLIDER OBJECT, INVOKE THE FOLLOWING CONSTRUCOTR:

QSlider ( Orientation orientation, QWidget * parent, const char * name = 0 );

QT::ORIENTATION: THIS TYPE IS ENUMUNATION TO SIGNIFY AN OBJECT’S ORIENTATION. TWO VALUES: QT::VERTICAL AND QT::HORIZONTAL.

19,20 >> THE TWO CONNECT() CALLS ENSURE THAT THE SPIN BOX AND THE SLIDER ARE SYNCHRONIZED SO THAT THEY ALWAYS SHOW THE SAME VALUE. WHENEVER THE VALUE OF ONE WIDGET CHANGES, ITS VALUECHANGED(INT) SIGNAL IS EMITTED, AND THE SETVALUE(INT) SLOT OF THE OTHER WIDGET IS CALLED WITH THE NEW VALUE.

 

21 >> WHEN THE SPLIN BOX VLAUE IS SET TO 35, THE QSPINBOX EMITS THE VALUECHANGED(INT) SIGNAL WITH AN INT ARGUMENT OF 35. THIS ARGUMENT IS PASSED TO THE QSLIDER’S SETVALUE(INT) SLOT, WHICH SETS THE SLIDER VALUE TO 35. THE SLIDER THEN EMITS THE VALUECHANGED(INT) SIGNAL, BECAUSE ITS OWN VLAUE CHANGED, TRIGGERING THE SPIN BOX’S SETVALUE(INT) SLOT. BUT AT THIS POINT, SETVALUE(INT) DOESN’T EMIT ANY SIGNAL, SINCE THE SPIN BOX IS ALREADY 35. THIS PREVENTS INFINITE RECURSION. THE FOLLOWING FIRURE EXPLANS THE SITUATION:

 

RUN RESULT:

============

 

CLASSES CHART:

===============

UNTILL NOW, THE CLASSES CHART:

 

 


RESOURCE LINKS:

================

1>> http://www.trolltech.com/

2>> http://www.qtcentre.org/

3>> http://doc.trolltech.com/4.2/examples.html#qt-tutorial

4>> http://www.qiliang.net/qt.html

posted on 2007-05-21 16:14 Zero Lee 閱讀(2813) 評論(0)  編輯 收藏 引用 所屬分類: CC++ Programming

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品欧美| 国产精品久久久久免费a∨大胸| 国产欧美一区二区三区在线老狼 | 久久伊人精品天天| 欧美一区二区三区视频| 国产欧美视频在线观看| 久久婷婷麻豆| 男人插女人欧美| 亚洲美女黄色片| 一本一本a久久| 国产精品一区在线播放| 久久久久欧美精品| 嫩草影视亚洲| 午夜一区二区三视频在线观看 | 欧美肥婆在线| 欧美婷婷久久| 久久人人爽爽爽人久久久| 免费欧美电影| 欧美一区二区三区在线看 | 亚洲欧美在线磁力| 国产精品推荐精品| 欧美福利一区二区| 国产精品人人做人人爽人人添| 久久精品国内一区二区三区| 欧美激情按摩| 久久久国产精品一区二区中文| 欧美成人亚洲成人日韩成人| 午夜精品免费视频| 欧美成人高清视频| 久久久午夜视频| 欧美日韩午夜剧场| 男人的天堂亚洲| 国产精品久久久久秋霞鲁丝 | 蜜桃伊人久久| 国产女人精品视频| 99精品国产在热久久| 在线观看日韩国产| 欧美在线播放视频| 午夜伦理片一区| 欧美激情视频网站| 老巨人导航500精品| 国产精品入口66mio| 亚洲国产精品久久久久| 国一区二区在线观看| 亚洲图片欧洲图片av| 99精品热视频只有精品10| 久久久综合激的五月天| 欧美一激情一区二区三区| 欧美日韩免费精品| 亚洲经典视频在线观看| 亚洲国产精品成人一区二区 | 久久精品视频导航| 久久精品一区二区国产| 国产欧美精品xxxx另类| 在线亚洲自拍| 亚洲在线视频观看| 欧美三级免费| 一区二区三区久久精品| 亚洲制服av| 欧美影院在线播放| 欧美日本在线看| 欧美国产日本高清在线| 亚洲国产aⅴ天堂久久| 久久国产精品99国产精| 久久国产天堂福利天堂| 国产精品丝袜91| 亚洲一区在线免费观看| 性欧美18~19sex高清播放| 国产精品亚发布| 性欧美激情精品| 久久免费99精品久久久久久| 狠狠色丁香婷婷综合久久片| 欧美在线资源| 欧美大成色www永久网站婷| 在线看不卡av| 欧美va天堂va视频va在线| 最新高清无码专区| 亚洲一二三级电影| 国产精品自拍一区| 久久嫩草精品久久久久| 亚洲激情二区| 亚洲欧美中文日韩v在线观看| 国产日韩欧美一区| 久久久久国内| 99视频精品| 久久久噜噜噜久久狠狠50岁| 亚洲福利久久| 欧美日韩调教| 久久gogo国模裸体人体| 亚洲黄色视屏| 久久av最新网址| 亚洲高清不卡一区| 欧美日韩一视频区二区| 欧美在线一区二区三区| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲自拍偷拍一区| 激情视频亚洲| 欧美午夜精品久久久久久孕妇| 亚洲男人的天堂在线观看| 女主播福利一区| 亚洲一区尤物| 亚洲欧洲一区二区三区久久| 国产精品家教| 欧美阿v一级看视频| 亚洲欧美久久| 亚洲日本黄色| 免费一级欧美片在线播放| 亚洲一区二区三区精品在线观看| 狠狠色狠狠色综合系列| 国产精品jizz在线观看美国| 老司机精品视频一区二区三区| 亚洲视频在线观看| 亚洲韩国青草视频| 麻豆乱码国产一区二区三区| 亚洲欧美韩国| 中日韩美女免费视频网址在线观看 | 伊人成年综合电影网| 国产精品伦一区| 欧美人成在线| 免费观看久久久4p| 久久精品中文字幕一区| 亚洲女人av| 亚洲一区国产精品| 日韩视频在线观看| 牛牛影视久久网| 欧美国产一区二区三区激情无套| 欧美一区二区精品在线| 亚洲一区二区三区在线视频 | 亚洲素人在线| 99精品视频免费全部在线| 亚洲人成人一区二区三区| 国产日韩欧美在线看| 亚洲国产高清在线观看视频| 久久久久高清| 欧美在线观看日本一区| 午夜精品免费| 午夜免费久久久久| 亚洲综合另类| 午夜一级久久| 午夜亚洲视频| 久久国产精品一区二区三区| 欧美一区二区免费视频| 久久福利视频导航| 久久久久久久高潮| 久热国产精品| 欧美激情第8页| 欧美日韩18| 国产精品xxxav免费视频| 国产精品久久久久久久午夜片| 欧美午夜宅男影院| 国产精品视频精品| 国产综合视频| 尤物九九久久国产精品的分类| 在线观看91精品国产入口| 亚洲福利视频一区| 亚洲美女在线一区| 一区二区三区日韩在线观看| 亚洲欧美国产毛片在线| 久久精品国产综合| 欧美激情一区二区三区高清视频| 亚洲国产日韩欧美| 一区二区三区|亚洲午夜| 亚洲午夜精品久久久久久app| 亚洲欧美日本国产有色| 久久婷婷久久一区二区三区| 欧美激情一区三区| 国产精品午夜电影| 激情亚洲成人| 一二美女精品欧洲| 久久精品成人一区二区三区蜜臀 | 亚洲国产老妈| 国产精品99久久99久久久二8| 性做久久久久久免费观看欧美| 久久婷婷丁香| 一本色道久久综合亚洲精品按摩 | 9国产精品视频| 久久成人精品| 欧美日韩二区三区| 一区二区三区在线观看欧美| 日韩视频二区| 久久在精品线影院精品国产| 999亚洲国产精| 久久久久久电影| 国产精品久久久久久久9999| 亚洲国产日韩欧美在线99| 欧美一级片久久久久久久| 91久久国产综合久久91精品网站| 午夜日韩电影| 欧美三级午夜理伦三级中文幕 | 欧美在线视频导航| 亚洲精品国精品久久99热| 久久国产精品99精品国产| 欧美日韩一区在线视频| 亚洲精品美女在线观看| 久久久久久伊人| 亚洲一区二区在线| 欧美日韩精品不卡| 亚洲精品综合| 亚洲国产精品国自产拍av秋霞| 一区二区三区精密机械公司 |