2008年7月9日 星期三

QT-chap 6

這一個例子只在讓窗口元件的複雜度更高一點
其中會使用到QVBox與QGrid的類別
其特性就是會自動安排加入其內部的子元件的位置
在版面的配置上還蠻好用的


class LCDRange : public QVBox
{
  public:
    LCDRange( QWidget *parent=0, const char *name=0 );
};

這裡宣告一個新的類別LCDRange,是由QVBox是一個容納元件,並沒有包含任何的API,在實作建構子時會再加入子視窗元件


class MyWidget : public QVBox
{
  public:
    MyWidget( QWidget *parent=0, const char *name=0 );
};

MyWidget也是除了一個構造函數之外沒有包含任何API


QGrid *grid = new QGrid( 4, this );

我們創建了一個四列的QGrid物件,意思是每填滿四個,會往下一行填新的元件。
這個QGrid窗口元件可以自動地把自己地子窗口部件排列到行列中,你可以指定行和列的數量,並且QGrid可以發現它的新子窗口元件並且把它們安放到Grid中。


for( int r = 0 ; r < 4 ; r++ )
  for( int c = 0 ; c < 4 ; c++ )
    (void)new LCDRange( grid );

因為Grid會自動安排子元件,所以,我們在生成LCDRange物件時,只要宣告其父視窗是Grid,則QGrid會幫我們自動安排位置

homework:
請參考C++ rand
在程式的部分則是把setValue放在connect之後才會有作用

沒有留言: