偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

  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.    }; 

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

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

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

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

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

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

  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 ) ); 

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

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

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

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

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

知道了應用程序的名稱將會打破上述原則,所以在一個組件,比如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.   } 

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

行為

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

【編輯推薦】

用Qt為Symbian開發(fā)應用程序

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

QML教程:構建和安裝QtComponents

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

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

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

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-27 16:07:49

Qt Designer

2011-06-08 14:55:37

Qt 教程

2011-06-08 15:06:09

Qt 教程

2011-08-30 15:32:08

QtQuickQML
點贊
收藏

51CTO技術棧公眾號