Qt入門(14)——父視窗部件和子視窗部件

尹成發表於2014-09-30


這個例子演示瞭如何建立一個父視窗部件和子視窗部件。
我們下面使用一個單一的父視窗部件和一個獨立的子視窗部件編寫介面。

    #include <qvbox.h>
我們新增了一個標頭檔案qvbox.h用來獲得我們要使用的佈局類。

        QVBox box;
這裡我們簡單地建立了一個垂直的盒子容器。QVBox把它的子視窗部件排成一個垂直的行,一個在其它的上面,根據每一個子視窗部件的QWidget::sizePolicy()來安排空間。

        box.resize( 200, 120 );
我們它的高設定為120畫素,寬為200畫素。

        QPushButton quit( "Quit", &box );
子視窗部件產生了。

QPushButton通過一個文字(“text”)和一個父視窗部件(box)生成的。子視窗部件總是放在它的父視窗部件的最頂端。當它被顯示的時候,它被父視窗部件的邊界擋住了一部分。
父視窗部件,QVBox,自動地把這個子視窗部件新增到它的盒子中央。因為沒有其它的東西被新增了,這個按鈕就獲得了父視窗部件的所有空間。

        box.show();
當父視窗部件被顯示的時候,它會呼叫所有子視窗部件的顯示函式(除非在這些子視窗部件中你已經明確地使用QWidget::hide())。

這個按鈕不再充滿整個視窗部件。相反,它獲得了一個“自然的”大小。這是因為現在的這個新的頂層視窗,使用了按鈕的大小提示和大小變化策略來設定這個按鈕的大小和位置。(請看QWidget::sizeHint()和QWidget::setSizePolicy()來獲得關於這幾個函式的更詳細的資訊。)


#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
#include <qvbox.h>


int main( int argc, char **argv )
{
    QApplication a( argc, argv );


    QVBox box;
    box.resize( 200, 120 );


    QPushButton quit( "Quit", &box );
    quit.setFont( QFont( "Times", 18, QFont::Bold ) );


    QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );


    a.setMainWidget( &box );
    box.show();


    return a.exec();
}





相關文章