• 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.看一下运行效果:

  • 相关阅读:
    分享自己写的基于Dapper的轻量级ORM框架~
    无屏幕和键盘配置树莓派WiFi和SSH
    树莓派配置静态IP
    给树莓派Raspbian stretch版本修改软件源
    使用powershell批量更新git仓库
    nodejs开发过程中遇到的一些插件记录
    在Ubuntu上搭建IntelliJ IDEA license server服务器
    腾讯云Ubuntu服务器修改root密码
    Elasticsearch搜索类型(query type)详解
    dubbo作为消费者注册过程分析
  • 原文地址:https://www.cnblogs.com/huipengbo/p/8228360.html
Copyright © 2020-2023  润新知