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

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 閱讀(2820) 評論(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| 免费短视频成人日韩| 欧美freesex8一10精品| 欧美大成色www永久网站婷| 欧美激情在线免费观看| 国产精品福利在线| 国产日韩欧美在线视频观看| 黄色精品一二区| 亚洲人成人一区二区在线观看| 亚洲精品四区| 午夜视频精品| 亚洲国产精品热久久| 91久久嫩草影院一区二区| 亚洲免费网址| 欧美福利电影网| 国产欧美日韩精品丝袜高跟鞋 | 欧美日韩国产页| 欧美午夜电影网| 精品福利电影| 日韩午夜高潮| 免费一区二区三区| 亚洲高清网站| 亚洲综合精品四区| 免费亚洲婷婷| 亚洲综合精品| 免费看成人av| 国产视频精品va久久久久久| 亚洲精品综合精品自拍| 午夜视频一区在线观看| 亚洲人屁股眼子交8| 欧美一级淫片播放口| 欧美日韩一区二| 亚洲三级影院| 欧美+亚洲+精品+三区| 亚洲欧美激情诱惑| 欧美屁股在线| 亚洲精品在线观| 免费亚洲一区二区| 午夜日韩在线观看| 欧美日韩在线直播| 一区二区国产日产| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲国产日本| 老色鬼久久亚洲一区二区| 国产视频一区免费看| 亚洲欧美日韩精品久久奇米色影视| 亚洲人成亚洲人成在线观看| 久久精品人人做人人爽| 国产精品中文字幕欧美| 正在播放欧美视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲欧美日韩国产中文在线| 亚洲激情二区| 欧美成年人网站| 1000部精品久久久久久久久| 久久综合影音| 久久精品麻豆| 在线观看91精品国产麻豆| 欧美在线观看www| 亚洲综合日韩在线| 国产日韩一区二区| 久久蜜桃精品| 久久亚洲风情| 亚洲片在线观看| 欧美国产日韩亚洲一区| 欧美精品在线免费播放| 亚洲夜晚福利在线观看| 一区二区三区视频观看| 亚洲第一精品夜夜躁人人爽 | 久久久久成人精品| 亚洲欧美日韩国产成人| 国产一区91精品张津瑜| 久久久亚洲一区| 久久久久国产精品人| 亚洲国产精品久久久久婷婷884| 亚洲国产高清一区二区三区| 欧美国产一区二区三区激情无套| 亚洲精品美女在线观看| 中文国产一区| 伊人夜夜躁av伊人久久| 亚洲精品视频在线| 国产视频亚洲| 亚洲三级视频| 国产性猛交xxxx免费看久久| 欧美成年人视频| 欧美三级电影一区| 久久久午夜视频| 欧美久久九九| 久久在线视频在线| 欧美日韩一区二区精品| 久久在线精品| 国产精品久久国产精麻豆99网站| 久久综合九色欧美综合狠狠| 欧美日韩在线播放三区| 欧美xx69| 国产亚洲视频在线| 99精品热6080yy久久| 在线看不卡av| 欧美亚洲视频在线看网址| 最新国产成人av网站网址麻豆| 亚洲午夜在线观看视频在线| 亚洲国产成人精品女人久久久| 一区二区三区精品在线| 亚洲高清在线播放| 亚洲欧美日韩第一区| 亚洲免费av片| 久久精品中文字幕一区二区三区| 一区二区三区四区精品| 久久精品欧美| 久久精品国产免费| 国产精品国产福利国产秒拍| 亚洲电影免费| 在线成人国产| 久久精品一二三区| 久久精品国产99国产精品澳门 | 男人插女人欧美| 久久er精品视频| 国产精品yjizz| 亚洲日韩欧美视频| 亚洲精品久久久久久久久久久久久| 午夜在线成人av| 亚洲欧美综合精品久久成人| 欧美日本不卡视频| 亚洲激情小视频| 日韩视频在线一区二区三区| 久久先锋影音| 噜噜噜久久亚洲精品国产品小说| 国产精品一二三| 亚洲自拍偷拍福利| 亚洲欧美日韩精品久久久| 国产精品高潮呻吟| 亚洲一区二区三区影院| 国产精品永久免费在线| 亚洲精选在线观看| 中文日韩在线| 国产精品国产自产拍高清av| 一区二区日韩免费看| 亚洲综合视频网| 欧美午夜理伦三级在线观看| 亚洲精品欧美一区二区三区| 亚洲免费观看高清在线观看| 欧美激情在线狂野欧美精品| 日韩视频在线播放| 亚洲欧美国产视频| 国产深夜精品福利| 久久婷婷麻豆| 亚洲精品乱码久久久久久| 一个色综合导航| 国产精品女主播在线观看| 性色一区二区| 欧美大片在线观看一区| 99re6热只有精品免费观看| 欧美三级午夜理伦三级中文幕| 亚洲影院高清在线| 免费亚洲一区| 亚洲一区国产| 伊人久久成人| 欧美日韩国产精品一卡| 亚洲综合视频网| 美女啪啪无遮挡免费久久网站| 亚洲精品激情| 国产精品久久久爽爽爽麻豆色哟哟 | 国产精品久久综合| 久久精品国产视频| 亚洲人成高清| 久久久久久久一区二区| 日韩视频免费观看高清在线视频 | 亚洲欧美国内爽妇网| 欧美国产精品劲爆| 午夜精品婷婷| 亚洲人成在线观看网站高清| 国产精品日韩一区| 美女视频黄a大片欧美| 一区二区三区久久网| 欧美国产综合视频| 欧美影片第一页| 亚洲精品裸体| 激情久久五月| 国产精品美女主播| 蜜桃精品一区二区三区| 亚洲欧美日韩综合一区| 亚洲国产欧美一区| 久久琪琪电影院| 亚洲欧美日韩在线| 亚洲美女性视频| 曰韩精品一区二区| 国产欧美日韩高清| 国产精品家教| 欧美精品一区二区三| 久久久久久久尹人综合网亚洲| 亚洲一级电影| 中文精品视频| 亚洲永久精品国产| 在线视频亚洲一区| 亚洲日本激情| 欧美激情一级片一区二区| 久久频这里精品99香蕉|