天天看點

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,如需轉載請自行聯系原作者

繼續閱讀