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