堆栈窗口 QStackedWidget 测试

QStackedWidget采用堆栈的思想,将不同的widget通过addwidget()函数放进该类的对象中,并默认编号,也可显式编号,默认从0开始。

indexOf()函数获取显示widget的页号或编号

setCurrentIndex(int) 来显示该页号的widget。

nice~


实例来一发

(1)效果图

效果图1

堆栈窗口 QStackedWidget 测试_第1张图片

效果图2

堆栈窗口 QStackedWidget 测试_第2张图片


(2)代码实现

.h文件:

[cpp] view plain copy
  1. #ifndef DIALOG_H  
  2. #define DIALOG_H  
  3.   
  4. #include   
  5. #include  
  6. #include  
  7. #include  
  8.   
  9. class Dialog : public QDialog  
  10. {  
  11.     Q_OBJECT  
  12.   
  13. public:  
  14.     Dialog(QWidget *parent = 0);  
  15.     ~Dialog();  
  16. private:  
  17.     QListWidget *listwidget;  
  18.     QStackedWidget *stackedwidget;  
  19.     QTableWidget *tablewidget1;  
  20.     QTableWidget *tablewidget2;  
  21.     QTableWidget *tablewidget3;  
  22.   
  23. };  
  24.   
  25. #endif // DIALOG_H  


.cpp文件:

[cpp] view plain copy
  1. #include "dialog.h"  
  2. #include  
  3.   
  4. Dialog::Dialog(QWidget *parent)  
  5.     : QDialog(parent)  
  6. {  
  7.     listwidget = new QListWidget;  
  8.     listwidget->addItem(tr("tablewidget1"));  
  9.     listwidget->addItem(tr("tablewidget2"));  
  10.     listwidget->addItem(tr("tablewidget3"));  
  11.   
  12.   
  13.   
  14.     tablewidget1 = new QTableWidget(2, 2, 0);  
  15.     tablewidget2 = new QTableWidget(4, 4, 0);  
  16.     tablewidget3 = new QTableWidget(8, 8, 0);  
  17.   
  18.   
  19.   
  20.     stackedwidget = new QStackedWidget;  
  21.     stackedwidget->addWidget(tablewidget1);  
  22.     stackedwidget->addWidget(tablewidget2);  
  23.     stackedwidget->addWidget(tablewidget3);  
  24.   
  25.   
  26.     QHBoxLayout *h_layout = new QHBoxLayout;  
  27.     h_layout->addWidget(listwidget);  
  28.     h_layout->addWidget(stackedwidget);  
  29.     h_layout->setStretchFactor(listwidget, 1);  
  30.     h_layout->setStretchFactor(stackedwidget, 8);  
  31.     setLayout(h_layout);  
  32.   
  33.   
  34.     setWindowTitle(tr("QStackedWidget Test"));  
  35.     setFixedSize(950, 300);  
  36.   
  37.   
  38.     QObject::connect(listwidget, SIGNAL(currentRowChanged(int)), stackedwidget,  SLOT(setCurrentIndex(int)));  
  39.   
  40. }  
  41.   
  42. Dialog::~Dialog()  
  43. {  
  44.   
  45. }  


main():

[cpp] view plain copy
  1. #include "dialog.h"  
  2. #include   
  3.   
  4. int main(int argc, char *argv[])  
  5. {  
  6.     QApplication a(argc, argv);  
  7.     Dialog w;  
  8.     w.show();  
  9.   
  10.     return a.exec();  
  11. }  


(3)补充说明

1、QStackedWidget里装了3个QTableWidget对象,分别是2X2,4X4, 8X8

2、

#include
#include
这个两个头文件不可少

3、 通过调用QHBoxLayout的函数setStrechFactor()来缩放和拉伸控件。

4、<>中用另一种方法:

stackedLayout = new QStackedLayout;    

stackedLayout->addWidget(appearancePage);  

  stackedLayout->addWidget(webBrowserPage); 

   stackedLayout->addWidget(mailAndNewsPage);    

stackedLayout->addWidget(advancedPage);   

通过QStackedWidget类中的QStackedLayout 分组布局来管理widget,效果一样




FROM:  http://blog.csdn.net/hustyangju/article/details/17716477

你可能感兴趣的:(QT/布局,QT/,界面)