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

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>
            亚洲国产精品久久久久秋霞影院| 欧美影院在线| 午夜一区不卡| 日韩写真在线| 亚洲美女色禁图| 亚洲每日更新| 亚洲欧美日韩直播| 欧美伊久线香蕉线新在线| 久久久99久久精品女同性| 久久久精品一区| 欧美1区免费| 91久久综合亚洲鲁鲁五月天| 狂野欧美性猛交xxxx巴西| 欧美wwwwww| 亚洲精品免费一二三区| av成人动漫| 欧美亚洲一区二区在线观看| 久久久在线视频| 欧美精品一区二区视频| 国产精品国产三级国产普通话三级| 国产精品久久一区二区三区| 一区二区三区在线看| 99精品99久久久久久宅男| 亚洲欧美国产77777| 免费看成人av| 久久精品亚洲精品| 久久另类ts人妖一区二区| 奶水喷射视频一区| 国产精品美女久久福利网站| 精品91免费| 亚洲一区高清| 欧美bbbxxxxx| 亚洲欧美日韩综合一区| 欧美 日韩 国产一区二区在线视频 | 久久久久久久尹人综合网亚洲| 免费久久精品视频| 欧美午夜电影网| 一区二区亚洲精品国产| 中文在线一区| 欧美激情一区二区三区高清视频| 夜夜爽99久久国产综合精品女不卡 | 国产在线观看一区| 一区二区三区四区五区视频| 久久久久久久综合| 一区二区三区精品视频在线观看| 久久久久九九视频| 国产欧美一区二区视频| 一区二区三区高清不卡| 免费视频最近日韩| 性久久久久久久久久久久| 欧美日韩国产综合久久| 在线日韩日本国产亚洲| 久久免费视频在线观看| 午夜国产精品影院在线观看| 欧美色综合天天久久综合精品| 亚洲青涩在线| 欧美激情国产高清| 久久米奇亚洲| 一区二区视频欧美| 欧美成人蜜桃| 另类av一区二区| 亚洲电影免费观看高清完整版| 久久精品男女| 欧美一级久久久| 国产午夜精品全部视频播放| 欧美在线免费观看视频| 性欧美videos另类喷潮| 国产欧美视频一区二区| 久久成人国产| 久久成人精品电影| 精品51国产黑色丝袜高跟鞋| 久久亚洲图片| 久久亚洲精品网站| 亚洲欧洲一级| 亚洲日本欧美天堂| 欧美图区在线视频| 性亚洲最疯狂xxxx高清| 先锋影音一区二区三区| 亚洲激情av在线| 亚洲激情电影在线| 亚洲电影免费观看高清完整版在线| 久久久国产精品一区二区三区| 激情久久久久久久| 欧美岛国激情| 欧美伦理视频网站| 亚洲先锋成人| 亚洲女人小视频在线观看| 国产精品嫩草99a| 欧美在线国产精品| 久久伊人精品天天| 亚洲最黄网站| 午夜国产不卡在线观看视频| 亚洲第一精品夜夜躁人人躁| 亚洲毛片在线观看| 国产一区91| 亚洲精品美女久久7777777| 国产欧美日韩在线播放| 欧美电影电视剧在线观看| 欧美午夜精品久久久久久久| 久久久av网站| 黄网站色欧美视频| 欧美成人一区二免费视频软件| 亚洲精品影视| 日韩午夜高潮| 国产欧美日韩麻豆91| 免费一级欧美在线大片| 欧美精品1区| 久久久久久久网| 欧美天天在线| 女人香蕉久久**毛片精品| 欧美三级韩国三级日本三斤| 久久久亚洲午夜电影| 欧美视频1区| 欧美国产视频在线观看| 国产欧美一区二区精品性色| 亚洲精品女av网站| 国产伦精品一区二区三区免费 | 欧美巨乳波霸| 久久婷婷国产综合精品青草| 欧美日韩三级视频| 欧美wwwwww| 激情久久久久久久| 亚洲欧美另类中文字幕| 中文av字幕一区| 欧美激情一区在线观看| 欧美好吊妞视频| 黄网站色欧美视频| 欧美中文字幕在线观看| 亚洲欧美在线高清| 欧美日韩欧美一区二区| 亚洲国产91精品在线观看| 国产在线日韩| 午夜激情综合网| 欧美在线免费视频| 国产精品一二三视频| 99视频+国产日韩欧美| 一区二区三区四区五区在线 | 亚洲一区二区三区四区中文 | 欧美日韩在线大尺度| 欧美激情按摩| 在线观看视频免费一区二区三区| 性欧美超级视频| 久久久91精品国产一区二区三区 | 亚洲男人第一网站| 午夜精品视频在线观看| 欧美日韩一区在线| 一本一本久久a久久精品综合妖精| 日韩天堂在线观看| 欧美日韩国产不卡| 99国产精品久久久| 亚洲永久免费av| 国产精品视频第一区| 欧美一级理论性理论a| 毛片一区二区三区| 亚洲日本欧美日韩高观看| 欧美激情中文字幕在线| 一本色道久久88综合亚洲精品ⅰ | 香蕉久久夜色精品| 国产一区二区成人久久免费影院| 午夜精品视频网站| 久久人人爽人人爽爽久久| 亚洲国产成人午夜在线一区| 欧美成人免费在线视频| 亚洲经典三级| 亚洲在线中文字幕| 国产欧美日韩一区| 久久久一区二区| 日韩亚洲欧美一区| 久久精品首页| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美精品在线观看播放| 亚洲欧美日韩国产| 欧美高清在线视频| 亚洲一区图片| 激情校园亚洲| 欧美日韩一区二区三区四区五区| 亚洲影院色无极综合| 男女精品网站| 亚洲视频福利| 激情成人亚洲| 国产精品扒开腿爽爽爽视频| 欧美在线视频观看| 亚洲精品日韩久久| 久久另类ts人妖一区二区| 99re66热这里只有精品4| 国产亚洲一区二区精品| 欧美精品一区二区三区久久久竹菊 | 午夜精品久久久久久久99樱桃 | 欧美精品v日韩精品v国产精品 | 亚洲一区二区黄| 国外视频精品毛片| 欧美日韩国产在线观看| 久久久国产一区二区| 一区二区三区国产在线| 亚洲大片精品永久免费| 久久精品一区二区| 亚洲欧美日韩国产综合| 亚洲精品系列| 亚洲国产综合91精品麻豆| 国产亚洲aⅴaaaaaa毛片|