qt 6.7 版本 ,QStackedLayout布局中添两个QWidget,每个QWidget都有一个按钮,点击后分别显示另一个布局
1.代码
在Qt 6.7中,如果你想要将QStackedLayout
布局中包含两个QWidget
,并且每个QWidget
都有一个按钮,点击按钮后显示另一个布局,同时希望将头文件(.h)和源文件(.cpp)分开,你可以按照以下方式组织你的代码:
首先是头文件(例如 MainWindow.h
):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QStackedLayout>
class MainWindow : public QWidget {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void switchToLayout1();
void switchToLayout2();
private:
QWidget *createWidgetWithButtonAndLabel(const QString &buttonText, const QString &labelText);
QStackedLayout *stackedLayout;
QWidget *widget1;
QWidget *widget2;
};
#endif // MAINWINDOW_H
接下来是源文件(例如 MainWindow.cpp
):
#include "MainWindow.h"
#include <QVBoxLayout>
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
// 创建两个带有按钮和标签的小部件
widget1 = createWidgetWithButtonAndLabel("Switch to Layout 2", "This is Layout 1");
widget2 = createWidgetWithButtonAndLabel("Switch to Layout 1", "This is Layout 2");
// 创建堆栈布局并添加小部件
stackedLayout = new QStackedLayout(this);
stackedLayout->addWidget(widget1);
stackedLayout->addWidget(widget2);
// 设置主布局为堆栈布局
this->setLayout(stackedLayout);
}
MainWindow::~MainWindow() {
}
QWidget *MainWindow::createWidgetWithButtonAndLabel(const QString &buttonText, const QString &labelText) {
QWidget *widget = new QWidget;
QVBoxLayout *layout = new QVBoxLayout(widget);
QPushButton *button = new QPushButton(buttonText);
QLabel *label = new QLabel(labelText);
layout->addWidget(button);
layout->addWidget(label);
if (buttonText == "Switch to Layout 2") {
connect(button, &QPushButton::clicked, this, &MainWindow::switchToLayout2);
} else {
connect(button, &QPushButton::clicked, this, &MainWindow::switchToLayout1);
}
return widget;
}
void MainWindow::switchToLayout1() {
stackedLayout->setCurrentIndex(0);
}
void MainWindow::switchToLayout2() {
stackedLayout->setCurrentIndex(1);
}
在这个例子中,MainWindow
类有一个私有方法 createWidgetWithButtonAndLabel
,它负责创建一个包含按钮和标签的小部件,并根据按钮的文本连接相应的槽函数以切换布局。MainWindow
的构造函数中调用了这个方法两次,以创建两个小部件,并将它们添加到 QStackedLayout
中。点击按钮时,会触发相应的槽函数(switchToLayout1
或 switchToLayout2
),从而改变堆栈布局中显示的页面。
2.运行结果
堆栈布局演示
原文地址:https://blog.csdn.net/xie__jin__cheng/article/details/140487139
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!