QStackedWidget

QStackedWidget  

//window1.h

#ifndef WINDOW1_H

#define WINDOW1_H
#include <QWidget>
namespace Ui {
class window1;
}
class window1 : public QWidget
{
    Q_OBJECT
    
public:
    explicit window1(QWidget *parent = 0);
    ~window1();
    
private:
    Ui::window1 *ui;
};
#endif // WINDOW1_H
//window.cpp
#include "window1.h"
#include "ui_window1.h"
window1::window1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::window1)
{
    ui->setupUi(this);
}
window1::~window1()
{
    delete ui;
}

  
  
QStackedWidget - 直到永远 - 直到永远的博客
其它,window2和3一样!!
 
再看主窗口

//widget.h

#ifndef WIDGET_H

#define WIDGET_H
#include <QWidget>
class QListWidget;
class QStackedWidget;
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    
private:
    Ui::Widget *ui;
    QListWidget* list1;
    QStackedWidget* stack;
};
#endif // WIDGET_H

//widget.cpp

#include "widget.h"

#include "ui_widget.h"
#include "window1.h"
#include "window2.h"
#include "window3.h"
#include <QListWidget>
#include <QStackedWidget>
#include <QLabel>
#include <QHBoxLayout>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    list1 = new QListWidget(this);
    list1->insertItem(0,"window1");
    list1->insertItem(1,"window2");
    list1->insertItem(2,"window3");
    window1 *win1 = new window1;
    window2 *win2 = new window2;
    window3 *win3 = new window3;
    stack = new QStackedWidget(this);
    stack->addWidget(win1);
    stack->addWidget(win2);
    stack->addWidget(win3);
    QHBoxLayout *mainLayout=new QHBoxLayout(this);
     mainLayout->setMargin(5);
     mainLayout->setSpacing(5);
     mainLayout->addWidget(list1);
     mainLayout->addWidget(stack);
     mainLayout->setStretchFactor(list1,1);//设置宽比,这里为1:3
     mainLayout->setStretchFactor(stack,3);
    connect(list1,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
    //由这块我们可以知道,stackWidget类可以加入很多个独立完整的类对象(stackWidget->addWidget(mypanel)),标记它们是靠添加时的顺序,如 0 1 2 3 ...
    //显示这些对象中的某个对象时用stackWidget->setCurrentIndex(id);
}
Widget::~Widget()
{
    delete ui;
}

 

效果:
 
    
    
 
 
QStackedWidget - 直到永远 - 直到永远的博客
  QStackedWidget - 直到永远 - 直到永远的博客
 
 
QStackedWidget - 直到永远 - 直到永远的博客
 
最后,QStackedWidget,一般和QCombox和QListWidget一起使用
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值