天天看點

堆棧視窗 QStackedWidget 測試

QStackedWidget采用堆棧的思想,将不同的widget通過addwidget()函數放進該類的對象中,并預設編号,也可顯式編号,預設從0開始。

indexOf()函數擷取顯示widget的頁号或編号

setCurrentIndex(int) 來顯示該頁号的widget。

nice~

執行個體來一發

(1)效果圖

效果圖1

堆棧視窗 QStackedWidget 測試

效果圖2

堆棧視窗 QStackedWidget 測試

(2)代碼實作

.h檔案:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include<QListWidget>
#include<QStackedWidget>
#include<QTableWidget>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    QListWidget *listwidget;
    QStackedWidget *stackedwidget;
    QTableWidget *tablewidget1;
    QTableWidget *tablewidget2;
    QTableWidget *tablewidget3;

};

#endif // DIALOG_H
           

.cpp檔案:

#include "dialog.h"
#include<QHBoxLayout>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    listwidget = new QListWidget;
    listwidget->addItem(tr("tablewidget1"));
    listwidget->addItem(tr("tablewidget2"));
    listwidget->addItem(tr("tablewidget3"));



    tablewidget1 = new QTableWidget(2, 2, 0);
    tablewidget2 = new QTableWidget(4, 4, 0);
    tablewidget3 = new QTableWidget(8, 8, 0);



    stackedwidget = new QStackedWidget;
    stackedwidget->addWidget(tablewidget1);
    stackedwidget->addWidget(tablewidget2);
    stackedwidget->addWidget(tablewidget3);


    QHBoxLayout *h_layout = new QHBoxLayout;
    h_layout->addWidget(listwidget);
    h_layout->addWidget(stackedwidget);
    h_layout->setStretchFactor(listwidget, 1);
    h_layout->setStretchFactor(stackedwidget, 8);
    setLayout(h_layout);


    setWindowTitle(tr("QStackedWidget Test"));
    setFixedSize(950, 300);


    QObject::connect(listwidget, SIGNAL(currentRowChanged(int)), stackedwidget,  SLOT(setCurrentIndex(int)));

}

Dialog::~Dialog()
{

}
           

main():

#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}
           

(3)補充說明

1、QStackedWidget裡裝了3個QTableWidget對象,分别是2X2,4X4, 8X8

2、

#include<QListWidget>      
#include<QStackedWidget>      
這個兩個頭檔案不可少      

3、 通過調用QHBoxLayout的函數setStrechFactor()來縮放和拉伸控件。

4、<<C++ GUI QT 4>>中用另一種方法:

stackedLayout = new QStackedLayout;    

stackedLayout->addWidget(appearancePage);  

  stackedLayout->addWidget(webBrowserPage); 

   stackedLayout->addWidget(mailAndNewsPage);    

stackedLayout->addWidget(advancedPage);   

通過QStackedWidget類中的QStackedLayout 分組布局來管理widget,效果一樣

繼續閱讀