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

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>
            蜜臀av在线播放一区二区三区| 免费成人性网站| 国产精品日韩欧美一区| 欧美视频精品在线| 国产精品区一区二区三区| 国产精品久久久久久久久久直播| 欧美精品一区二区三区在线看午夜| 欧美成人一区二区三区| 欧美精品123区| 国产精品女主播| 一区免费观看| 亚洲美女视频| 午夜视频久久久| 男同欧美伦乱| 亚洲每日在线| 久久丁香综合五月国产三级网站| 麻豆国产精品777777在线| 欧美人成网站| 国产日韩欧美二区| 亚洲精品在线观| 久久激情综合网| 亚洲第一在线视频| 亚洲一区二区伦理| 欧美高清视频在线播放| 国产乱人伦精品一区二区| 亚洲国产三级| 久久精品国产一区二区电影| 欧美成人一二三| 亚洲一区精彩视频| 欧美顶级大胆免费视频| 狠狠88综合久久久久综合网| 一区二区三区免费网站| 老司机aⅴ在线精品导航| 99re6这里只有精品视频在线观看| 久久精品国产亚洲aⅴ| 国产精品久久网站| 一区二区国产精品| 亚洲国产精品久久人人爱蜜臀| 亚洲欧美三级在线| 欧美日韩午夜在线视频| 亚洲经典三级| 免费亚洲一区二区| 欧美一区二区成人| 国产精品网站在线观看| 一区二区国产在线观看| 最新日韩中文字幕| 免费成人高清| 影院欧美亚洲| 久久久7777| 欧美一区二视频| 国产精品自拍在线| 亚洲免费中文字幕| 一区二区电影免费观看| 欧美日韩精品在线观看| 日韩视频一区二区在线观看 | 亚洲美女免费精品视频在线观看| 在线观看一区| 久久精品在线观看| 亚洲综合色婷婷| 国产丝袜一区二区三区| 性高湖久久久久久久久| 亚洲一区二区三区四区五区黄| 欧美色中文字幕| 亚洲一区二区三区四区中文| 一区二区三区成人| 国产精品久久福利| 午夜电影亚洲| 久久精品在线免费观看| 亚洲第一在线综合在线| 亚洲福利视频网| 欧美日韩你懂的| 香蕉视频成人在线观看| 欧美专区日韩专区| 一区二区在线观看视频在线观看| 欧美ed2k| 欧美日韩一区在线观看视频| 午夜精品福利在线观看| 久久激情综合| 亚洲美女在线观看| 亚洲午夜av在线| 国产自产精品| 亚洲国产精品免费| 国产精品久久久久久久久动漫| 久久国产欧美精品| 免费亚洲一区二区| 亚洲图片自拍偷拍| 久久er精品视频| 日韩午夜在线播放| 亚洲欧美日韩专区| 亚洲国产一区视频| 亚洲视频欧美视频| 黄色影院成人| 亚洲精品免费看| 国产一级精品aaaaa看| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美日韩国产综合新一区| 久久国产精品黑丝| 欧美精品国产一区| 久久精品国产免费看久久精品| 久久躁狠狠躁夜夜爽| 亚洲资源在线观看| 免费的成人av| 久久久五月天| 国产精品jvid在线观看蜜臀 | 一本一道久久综合狠狠老精东影业| 妖精视频成人观看www| 国产在线精品一区二区夜色| 亚洲国产精品久久精品怡红院| 国产伦精品一区二区三区在线观看| 欧美激情一二三区| 国产综合色在线视频区| 亚洲一级黄色| 夜夜精品视频一区二区| 美脚丝袜一区二区三区在线观看| 香港久久久电影| 欧美四级在线| 欧美一级网站| 欧美黄色免费网站| 国产人成一区二区三区影院| 亚洲电影成人| 亚洲电影第三页| 久久av在线看| 久久不射电影网| 国产精品久久久久久久久久三级| 亚洲国产精品女人久久久| 亚洲高清一二三区| 久久久久国产一区二区三区| 久久狠狠婷婷| 国产视频综合在线| 欧美一区二区三区视频在线观看| 欧美一级大片在线观看| 国产精品久久久久99| 99日韩精品| 中文精品视频一区二区在线观看| 欧美成人蜜桃| 亚洲看片一区| 亚洲影院在线观看| 国产精品久久久久9999| 亚洲欧美日韩国产一区| 久久大逼视频| 狠狠v欧美v日韩v亚洲ⅴ| 久久精品日韩| 欧美成人中文| 一区二区电影免费观看| 欧美日韩日日骚| 亚洲性线免费观看视频成熟| 欧美亚洲一区二区三区| 国产一区二区三区在线观看免费视频| 午夜精品区一区二区三| 久久久久青草大香线综合精品| 国内精品美女av在线播放| 久久夜色精品一区| 亚洲国产精品毛片| 亚洲一区二区三区乱码aⅴ| 国产精品你懂的在线| 欧美怡红院视频| 欧美激情在线狂野欧美精品| 99riav久久精品riav| 国产精品久久久久7777婷婷| 欧美在线资源| 亚洲国产精品尤物yw在线观看| 一本色道久久综合亚洲精品小说| 国产精品狼人久久影院观看方式| 久久精品视频在线播放| 亚洲激情在线观看视频免费| 亚洲自拍电影| 在线精品国产欧美| 欧美区高清在线| 欧美在线高清| 日韩午夜视频在线观看| 久久久久久久久久久成人| 亚洲精品视频免费在线观看| 国产区在线观看成人精品| 欧美1区视频| 亚洲欧美日韩国产中文 | 欧美激情成人在线| 亚洲视频免费看| 精久久久久久| 欧美性事在线| 浪潮色综合久久天堂| 亚洲性视频网站| 亚洲国产美国国产综合一区二区| 欧美一区二区成人| 亚洲精品欧美精品| 精品999久久久| 国产精品人人做人人爽人人添| 久久久久久网站| 午夜在线视频观看日韩17c| 国产曰批免费观看久久久| 欧美日韩三级| 欧美电影免费观看网站| 午夜视频在线观看一区| 亚洲欧洲日产国产综合网| 久久免费99精品久久久久久| 亚洲小视频在线| 日韩天天综合| 91久久精品美女| 136国产福利精品导航网址应用 | 欧美国产先锋| 久久综合狠狠综合久久激情|