zoukankan      html  css  js  c++  java
  • Qt创建堆叠窗口

    1.QT创建堆叠窗口使用类,但是使用它时主窗口不能是MainWindow,否则会出现布局错误,本例中使用基类为QDialog

    QStackedWidget

    2.可以配合列表框QListWidget和QComboBox使用

    3.先看代码stackwindow.h文件:

    #define STACKWINDOW_H
    
    #include <QDialog>
    #include <QListWidget>//列表框
    #include <QStackedWidget>//堆栈窗体
    #include <QLabel>
    
    
    class StackWindow : public QDialog
    {
        Q_OBJECT
    
    public:
        StackWindow(QWidget *parent = 0);
        ~StackWindow();
    
        void initWindow();
    
    private:
        QListWidget *_lw;
        QStackedWidget *_sw;
        QLabel *_lb1;
        QLabel *_lb2;
        QLabel *_lb3;
    };
    
    #endif // STACKWINDOW_H

    4.看主文件stackwindow.cpp,代码主要封装在initWindow函数中

    #include "stackwindow.h"
    #include <QVBoxLayout>
    
    StackWindow::StackWindow(QWidget *parent)
        : QDialog(parent)
    {
        initWindow();
    
    }
    
    StackWindow::~StackWindow()
    {
    
    }
    
    void StackWindow::initWindow()
    {
        setWindowTitle("堆栈窗体");
    
    
    
        //初始化控件
        _lw = new QListWidget(this);
    
    
    
        //QListWidget中插入选择项
    
        _lw->insertItem(0,"主页");
        _lw->insertItem(1,"娱乐");
        _lw->insertItem(2,"八卦");
    
        //初始化标签控件
        _lb1 = new QLabel("看新闻",this);
        _lb2 = new QLabel("看娱乐",this);
        _lb3 = new QLabel("看八卦",this);
        //创建堆叠窗体
        _sw = new QStackedWidget(this);//父对象为主窗体
        //_sw->setStyleSheet("background:red");
        //将三个label加入_sw中
        _sw->addWidget(_lb1);
        _sw->addWidget(_lb2);
        _sw->addWidget(_lb3);
    
    
        //对主窗口布局
    
        QHBoxLayout *hl = new QHBoxLayout();
        hl->setMargin(10);//设置边距
        hl->setSpacing(10);//设置控件间距
    
        //布局中加入窗体
        hl->addWidget(_lw);
        hl->addWidget(_sw,0,Qt::AlignHCenter);
    
        hl->setStretchFactor(_lw,1);//设置控件尺寸占比
        hl->setStretchFactor(_sw,3);//
    
    
    
        setLayout(hl);
    
    
        connect(_lw,SIGNAL(currentRowChanged(int)),_sw,SLOT(setCurrentIndex(int)));
    
    
    }

    5.main文件比较简单

    #include "stackwindow.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        StackWindow w;
        w.show();
    
        return a.exec();
    }

    6.看一下运行效果:

  • 相关阅读:
    view加阴影和边框
    监视scrollview是否滚动到底
    (疯狂java)第二课
    (疯狂java)第一课
    iOS 5.0 后UIViewController新增:willMoveToParentViewController和didMoveToParentViewCon
    UIPanGestureRecognizer中translationInView的理解
    Btn要记得对状态进行设置
    添加navbar以及上面的左右按钮代码
    uimodalpresentationformsheet resize ios7
    Java Socket
  • 原文地址:https://www.cnblogs.com/huipengbo/p/8228360.html
Copyright © 2011-2022 走看看