Qt教程 調(diào)用退出 (2)
你已經(jīng)在***章中創(chuàng)建了一個(gè)窗口,我們現(xiàn)在使這個(gè)應(yīng)用程序在用戶讓它退出的時(shí)候退出。
- #include <qapplication.h>
- #include <qpushbutton.h>
- #include <qfont.h>
- int main( int argc, char **argv )
- {
- QApplication a( argc, argv );
- QPushButton quit( "Quit", 0 );
- quit.resize( 75, 30 );
- quit.setFont( QFont( "Times", 18, QFont::Bold ) );
- QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
- a.setMainWidget( &quit );
- quit.show();
- return a.exec();
- }
解說:
- #include <qfont.h>
因?yàn)檫@個(gè)程序使用了QFont,所以它需要包含qfont.h。Qt的字體提取和X中提供的可怕的字體提取大為不同,字體的載入和使用都已經(jīng)被高度優(yōu)化了。
- QPushButton quit( "Quit", 0 );
這時(shí),按鈕顯示“Quit”,確切的說這就是當(dāng)用戶點(diǎn)擊這個(gè)按鈕時(shí)程序所要做的。這不是一個(gè)巧合。因?yàn)檫@個(gè)按鈕是一個(gè)頂層窗口,我們還是把0作為它的父對象。
- quit.resize( 75, 30 );
我們給這個(gè)按鈕選擇了另外一個(gè)大小,因?yàn)檫@個(gè)文本比“Hello world!”小一些。我們也可以使用QFontMetrics來設(shè)置正確的大小。
- quit.setFont( QFont( "Times", 18, QFont::Bold ) );
這里我們給這個(gè)按鈕選擇了一個(gè)新字體,Times字體中的18點(diǎn)加粗字體。注意在這里我們調(diào)用了這個(gè)字體。
你也可以改變整個(gè)應(yīng)用程序的默認(rèn)字體(使用QApplication::setFont())。
- QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
connect也許是Qt中最重要的特征了。注意connect()是QObject中的一個(gè)靜態(tài)函數(shù)。不要把這個(gè)函數(shù)和socket庫中的connect()搞混了。
這一行在兩個(gè)Qt對象(直接或間接繼承QObject對象的對象)中建立了一種單向的連接。每一個(gè)Qt對象都有signals(發(fā)送消息)和slots(接收消息)。所有窗口部件都是Qt對象。它們繼承QWidget,而QWidget繼承QObject。
這里quit的clicked()信號和a的quit()槽連接起來了,所以當(dāng)這個(gè)按鈕被按下的時(shí)候,這個(gè)程序就退出了。
信號和槽文檔詳細(xì)描述了這一主題。
行為
當(dāng)你運(yùn)行這個(gè)程序的時(shí)候,你會看到這個(gè)窗口比***章中的那個(gè)小一些,并且被一個(gè)更小的按鈕充滿。
【編輯推薦】