欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【QT中堆栈布局的实现】

【QT中堆栈布局的实现】

2024/10/24 15:25:00 来源:https://blog.csdn.net/paidaxing_s/article/details/140249127  浏览:    关键词:【QT中堆栈布局的实现】

学习分享

  • 1、环境设置,头文件
  • 2、.h文件
    • 2.1、主界面.h文件
    • 2.2、对话界面1.h文件
    • 2.3、对话界面2.h文件
  • 3、.cpp文件
    • 3.1、对话界面1.cpp
    • 3.2、对话界面2.cpp
    • 3.3、主界面.cpp
    • 3.4、main.cpp

1、环境设置,头文件

该示例使用C++14实现,因此在QT项目pro文件中修改配置
在这里插入图片描述
使用智能指针实现,需要的头文件为:

#include <memory>

2、.h文件

2.1、主界面.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QStackedLayout>
#include "dialogq.h"
#include "dialogw.h"
#include <memory>
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::MainWindow *ui;QStackedLayout * layout;std::unique_ptr<Dialogq> dialog11;std::unique_ptr<Dialogw> dialog22;
};#endif // MAINWINDOW_H

2.2、对话界面1.h文件

#ifndef DIALOGQ_H
#define DIALOGQ_H#include <QWidget>namespace Ui {
class Dialogq;
}class Dialogq : public QWidget
{Q_OBJECTpublic:explicit Dialogq(QWidget *parent = nullptr);~Dialogq();private:Ui::Dialogq *ui;
};#endif // DIALOGQ_H

2.3、对话界面2.h文件

#ifndef DIALOGW_H
#define DIALOGW_H#include <QWidget>namespace Ui {
class Dialogw;
}class Dialogw : public QWidget
{Q_OBJECTpublic:explicit Dialogw(QWidget *parent = nullptr);~Dialogw();private:Ui::Dialogw *ui;
};#endif // DIALOGW_H

3、.cpp文件

3.1、对话界面1.cpp

#include "dialogq.h"
#include "ui_dialogq.h"Dialogq::Dialogq(QWidget *parent) :QWidget(parent),ui(new Ui::Dialogq)
{ui->setupUi(this);
}Dialogq::~Dialogq()
{delete ui;
}

3.2、对话界面2.cpp

#include "dialogw.h"
#include "ui_dialogw.h"Dialogw::Dialogw(QWidget *parent) :QWidget(parent),ui(new Ui::Dialogw)
{ui->setupUi(this);
}Dialogw::~Dialogw()
{delete ui;
}

3.3、主界面.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStackedLayout>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);this->dialog11 =std::make_unique<Dialogq>();this->dialog22 =std::make_unique<Dialogw>();this->layout =new QStackedLayout(ui->frame);this->layout->addWidget(dialog11.get());this->layout->addWidget(dialog22.get());
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{this->layout->setCurrentWidget(dialog11.get());
}void MainWindow::on_pushButton_2_clicked()
{this->layout->setCurrentWidget(dialog22.get());
}

3.4、main.cpp


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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com