Qt入門(13)——Qt的呼叫退出

尹成發表於2014-09-30

如果我們建立了一個視窗,接下來使這個應用程式在使用者讓它退出的時候退出。


    #include <qfont.h>
因為這個程式使用了QFont,所以它需要包含qfont.h。Qt的字型提取和X中提供的可怕的字型提取大為不同,字型的載入和使用都已經被高度優化了。
        QPushButton quit( "Quit", 0 );
這時,按鈕顯示“Quit”,確切的說這就是當使用者點選這個按鈕時程式所要做的。這不是一個巧合。因為這個按鈕是一個頂層視窗,我們還是把0作為它的父物件。
        quit.resize( 75, 30 );
我們給這個按鈕選擇了另外一個大小,因為這個文字比“Hello world!”小一些。我們也可以使用QFontMetrics來設定正確的大小。
        quit.setFont( QFont( "Times", 18, QFont::Bold ) );
這裡我們給這個按鈕選擇了一個新字型,Times字型中的18點加粗字型。注意在這裡我們呼叫了這個字型。
你也可以改變整個應用程式的預設字型(使用QApplication::setFont())。
        QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
connect也許是Qt中最重要的特徵了。注意connect()是QObject中的一個靜態函式。不要把這個函式和socket庫中的connect()搞混了。
這一行在兩個Qt物件(直接或間接繼承QObject物件的物件)中建立了一種單向的連線。每一個Qt物件都有signals(傳送訊息)和slots(接收訊息)。所有視窗部件都是Qt物件。它們繼承QWidget,而QWidget繼承QObject。
這裡quit的clicked()訊號和a的quit()槽連線起來了,所以當這個按鈕被按下的時候,這個程式就退出了。
訊號和槽文件詳細描述了這一主題。

#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();
}




相關文章