成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt教程 使用窗口部件 (4)

移動開發
這個教程介紹了使用Qt工具包進行圖形用戶界面編程。它沒有包括所有的東西:強調的是教授一種圖形用戶界面編程的編程思想,并且介紹Qt的特征也是必需的。一些通常情況下使用的特征在這個教程里沒有用到。

繼續Qt教程第三章的講解,本文章這個例子顯示了如何創建一個你自己的窗口部件,描述如何控制一個窗口部件的最小大小和***大小,并且介紹了窗口部件的名稱。

  1. #include <qapplication.h> 
  2. #include <qpushbutton.h> 
  3. #include <qfont.h> 
  4. class MyWidget : public QWidget  
  5. {  
  6. public:  
  7.     MyWidget( QWidget *parent=0, const char *name=0 );  
  8. };  
  9. MyWidget::MyWidget( QWidget *parent, const char *name )  
  10.         : QWidget( parent, name )  
  11. {  
  12.     setMinimumSize( 200, 120 );  
  13.     setMaximumSize( 200, 120 );  
  14.     QPushButton *quit = new QPushButton( "Quit", this, "quit" );  
  15.     quit->setGeometry( 62, 40, 75, 30 );  
  16.     quit->setFont( QFont( "Times", 18, QFont::Bold ) );  
  17.     connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );  
  18. }  
  19. int main( int argc, char **argv )  
  20. {  
  21.     QApplication a( argc, argv );  
  22.  
  23.     MyWidget w;  
  24.     w.setGeometry( 100, 100, 200, 120 );  
  25.     a.setMainWidget( &w );  
  26.     w.show();  
  27.     return a.exec();  

解說

  1. class MyWidget : public QWidget  
  2.    {  
  3.    public:  
  4.        MyWidget( QWidget *parent=0, const char *name=0 );  
  5.    }; 

這里我們創建了一個新類。因為這個類繼承了QWidget,所以新類是一個窗口部件,并且可以最為一個頂層窗口或者子窗口部件(像第三章里面的按鈕)。

這個類只有一個成員函數,構造函數(加上從QWidget繼承來的成員函數)。這個構造函數是一個標準的Qt窗口部件構造函數,當你創建窗口部件時,你應該總是包含一個相似的構造函數。

***個參數是它的父窗口部件。為了生成一個頂層窗口,你指定一個空指針作為父窗口部件。就像你看到的那樣,這個窗口部件默認地被認做是一個頂層窗口。

第二個參數是這個窗口部件的名稱。這個不是顯示在窗口標題欄或者按鈕上的文本。這只是分配給窗口部件的一個名稱,以后可以用來查找這個窗口部件,并且這里還有一個方便的調試功能可以完整地列出窗口部件層次。

  1. MyWidget::MyWidget( QWidget *parent, const char *name )  
  2.  : QWidget( parent, name ) 

構造函數的實現從這里開始。像大多數窗口部件一樣,它把parent和name傳遞給了QWidget的構造函數。 

  1. {  
  2.       setMinimumSize( 200, 120 );  
  3.       setMaximumSize( 200, 120 ); 

因為這個窗口部件不知道如何處理重新定義大小,我們把它的最小大小和***大小設置為相等的值,這樣我們就確定了它的大小。在下一章,我們將演示窗口部件如何響應用戶的重新定義大小事件。

  1. QPushButton *quit = new QPushButton( "Quit", this, "quit" );  
  2.         quit->setGeometry( 62, 40, 75, 30 );  
  3.         quit->setFont( QFont( "Times", 18, QFont::Bold ) ); 

這里我們創建并設置了這個窗口部件的一個名稱為“quit”的子窗口部件(新窗口部件的父窗口部件是this)。這個窗口部件名稱和按鈕文本沒有關系,只是在這一情況下碰巧相似。

注意quit是這個構造函數中的局部變量。MyWidget不能跟蹤它,但Qt可以,當MyWidget被刪除的時 候,默認地它也會被刪除。這就是為什么MyWidget不需要一個析構函數的原因。(另外一方面,如果你選擇刪除一個子窗口部件,也沒什么壞處,這個子窗 口部件會自動告訴Qt它即將死亡。)

  1. setGeometry()調用和上一章的move()和resize()是一樣的。   
  2.         connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );  
  3.     } 

因為MyWidget類不知道這個應用程序對象,它不得不連接到Qt的指針,qApp。

一個窗口部件就是一個軟件組件并且它應該盡量少地知道關于它的環境,因為它應該盡可能的通用和可重用。

知道了應用程序的名稱將會打破上述原則,所以在一個組件,比如MyWidget,需要和應用程序對象對話的這種情況下,Qt提供了一個別名,qApp。

  1. int main( int argc, char **argv )  
  2.   {  
  3.       QApplication a( argc, argv );  
  4.       MyWidget w;  
  5.       w.setGeometry( 100, 100, 200, 120 );  
  6.       a.setMainWidget( &w );  
  7.       w.show();  
  8.       return a.exec();  
  9.   } 

這里我們舉例說明了我們的新子窗口部件,把它設置為主窗口部件,并且執行這個應用程序。

行為

這個程序和上一章的在行為上非常相似。不同點是我們實現的方式。無論如何它的行為還是有一些小差別。試試改變它的大小,你會看到什么?

【編輯推薦】

用Qt為Symbian開發應用程序

QML教程:Qt-Quick六大開源組件

QML教程:構建和安裝QtComponents

開源軟件是基于JVM 平臺之Qt移植QtJambi

Qt開發者系列之一:來自瑞典的QML狂熱愛好者

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-07-04 16:20:54

QT 窗口 QWidget

2011-06-22 10:27:32

QT 鍵盤 焦點

2011-07-04 16:12:00

QT QWidget

2011-06-16 11:13:13

QtQWidget

2011-07-04 16:31:24

QT 部件

2011-05-11 17:48:31

CocoaiOS

2011-06-20 15:52:14

Qt Designer 控件

2010-05-13 10:45:38

2011-06-20 16:38:33

Qt QWidget Qt4.5

2021-02-23 13:27:28

Android 12谷歌小部件

2011-06-13 11:07:22

QT 移植

2011-08-03 14:06:30

Xcode 4 安裝

2023-12-11 07:41:30

PyQt6Python用對象樹管理窗口

2011-07-04 11:21:59

QT Designer

2011-06-21 09:46:49

Qt 半透明 嵌入

2011-06-24 10:54:34

Qt Mysql

2011-06-08 14:55:37

Qt 教程

2011-06-27 16:07:49

Qt Designer

2011-06-08 15:06:09

Qt 教程

2011-08-30 15:32:08

QtQuickQML
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线视频一区二区三区 | 成人中文网 | 91亚洲一区| 91 视频网站 | 精品亚洲一区二区三区四区五区 | 欧美久久久久 | 亚洲一区二区久久久 | 国产精品美女久久久久aⅴ国产馆 | 91久久国产 | 日本黄色影片在线观看 | 在线免费观看视频你懂的 | 午夜一区二区三区在线观看 | 日韩精品一区二 | ririsao久久精品一区 | 国产一级在线 | 天天影视色综合 | 免费成人高清在线视频 | 草比网站| 色吧久久 | 午夜视频精品 | 久久午夜精品福利一区二区 | 黄色免费av| 99re6热在线精品视频播放 | 欧美日韩国产一区二区三区 | 成人免费三级电影 | 久久久一二三区 | 99在线免费视频 | 国产日韩欧美在线一区 | 欧美日在线 | va精品 | 久久婷婷麻豆国产91天堂 | 精品在线观看一区 | 国产精品久久av | 99re视频| 97av在线 | 蜜桃av人人夜夜澡人人爽 | 涩涩鲁亚洲精品一区二区 | 中文字幕av亚洲精品一部二部 | 日本色婷婷 | 精品国产一区二区三区日日嗨 | 夜夜撸av|