天天看点

Qt之布局管理——堆栈窗体

QStackedWidget类继承于QFrame类,用于堆栈窗体的管理。

void setCurrentIndex( int index )            index参数的索引位置的部件,是可见的。(index默认为-1,表示堆栈为空)

void setCurrentWidget( QWidget * widget )        widget参数指定的部件,是可见的。

实现效果:

<a href="http://images.cnblogs.com/cnblogs_com/hanzhaoxin/201211/201211170907379945.png"></a>

maindlg.h

#ifndef MAINDLG_H  

#define MAINDLG_H  

#include &lt;QtGui&gt;  

class MainDlg : public QDialog  

{  

    Q_OBJECT  

public:  

    MainDlg(QWidget *parent = 0, Qt::WFlags flags = 0);  

    ~MainDlg();  

private:  

    QLabel *lab1;  

    QLabel *lab2;  

    QLabel *lab3;  

    QListWidget *m_list;  

    QStackedWidget *stack;  

};  

#endif // MAINDLG_H  

maindlg.cpp

#include "maindlg.h"  

MainDlg::MainDlg(QWidget *parent, Qt::WFlags flags)  

    : QDialog(parent, flags)  

    setWindowTitle(tr("Stacked Widgets example"));  

    //左部的列表框:  

    m_list = new QListWidget;  

    m_list-&gt;insertItem(0,tr("Window 1"));  

    m_list-&gt;insertItem(1,tr("Window 2"));  

    m_list-&gt;insertItem(2,tr("Window 3"));  

    //右部的堆栈窗:  

    stack = new QStackedWidget(this);  

    lab1 = new QLabel(tr("This is window 1"));  

    stack-&gt;addWidget(lab1);  

    lab2 = new QLabel(tr("This is window 2"));  

    stack-&gt;addWidget(lab2);  

    lab3 = new QLabel(tr("This is window 3"));  

    stack-&gt;addWidget(lab3);    

    //布局;  

    QHBoxLayout *mainLayout = new QHBoxLayout(this);  

    mainLayout-&gt;addWidget(m_list);  

    mainLayout-&gt;addWidget(stack,0,Qt::AlignHCenter);  

    mainLayout-&gt;setMargin(5);  

    mainLayout-&gt;setSpacing(5);  

    mainLayout-&gt;setStretchFactor(m_list,1);  

    mainLayout-&gt;setStretchFactor(stack,3);  

    connect(m_list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));  

}  

MainDlg::~MainDlg()  

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/17/2774356.html,如需转载请自行联系原作者

继续阅读