C++Qt不用Qt工程师,用QStackedWidget完整代码实现在主窗口中三个子窗口之间进行切换,并且保证各个窗口之间不会产生冲突
时间: 2023-06-19 16:09:53 浏览: 55
好的,以下是使用QStackedWidget实现在主窗口中三个子窗口之间进行切换的完整C++ Qt代码:
mainwindow.h文件:
```
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStackedWidget>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QStackedWidget *stackedWidget; // 声明 QStackedWidget 指针
QWidget *page1; // 第一个子窗口
QWidget *page2; // 第二个子窗口
QWidget *page3; // 第三个子窗口
void createPages(); // 创建三个子窗口
private slots:
void switchPage(int index); // 切换子窗口的槽函数
};
#endif // MAINWINDOW_H
```
mainwindow.cpp文件:
```
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
stackedWidget = new QStackedWidget(this); // 创建 QStackedWidget 对象
setCentralWidget(stackedWidget); // 将 QStackedWidget 对象设置为主窗口的中心部件
createPages(); // 创建三个子窗口
connect(stackedWidget, &QStackedWidget::currentChanged, this, &MainWindow::switchPage); // 连接 QStackedWidget 的 currentChanged 信号和 switchPage 槽函数
}
MainWindow::~MainWindow()
{
}
void MainWindow::createPages()
{
page1 = new QWidget(this); // 创建第一个子窗口的 QWidget 对象
stackedWidget->addWidget(page1); // 将第一个子窗口的 QWidget 对象添加到 QStackedWidget 中
// 在这里添加第一个子窗口的其他控件
page2 = new QWidget(this); // 创建第二个子窗口的 QWidget 对象
stackedWidget->addWidget(page2); // 将第二个子窗口的 QWidget 对象添加到 QStackedWidget 中
// 在这里添加第二个子窗口的其他控件
page3 = new QWidget(this); // 创建第三个子窗口的 QWidget 对象
stackedWidget->addWidget(page3); // 将第三个子窗口的 QWidget 对象添加到 QStackedWidget 中
// 在这里添加第三个子窗口的其他控件
}
void MainWindow::switchPage(int index)
{
// 在这里添加需要执行的切换操作
}
```
在switchPage槽函数中,可以根据当前的index值进行不同的操作,例如:
```
void MainWindow::switchPage(int index)
{
switch (index) {
case 0:
// 切换到第一个子窗口
break;
case 1:
// 切换到第二个子窗口
break;
case 2:
// 切换到第三个子窗口
break;
default:
break;
}
}
```
这样,就可以实现在主窗口中三个子窗口之间进行切换,并且保证各个窗口之间不会产生冲突。