Qt creator在Qwidget Q1上創建三個可切換的界面,界面的大小和Qwidget Q1的的大小一致的代碼
时间: 2024-02-20 14:01:26 浏览: 86
好的,以下是一个简单的示例代码,演示如何在 QWidget Q1 上创建三个可切换的界面,界面的大小与 QWidget Q1 一致:
mainwindow.h 文件:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStackedWidget>
#include <QComboBox>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QWidget *m_widget1;
QWidget *m_widget2;
QWidget *m_widget3;
QStackedWidget *m_stackedWidget;
QComboBox *m_comboBox;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp 文件:
```cpp
#include "mainwindow.h"
#include <QHBoxLayout>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建三个 QWidget,设置它们的大小与 QMainWindow 一致
m_widget1 = new QWidget(this);
m_widget1->setFixedSize(400, 400);
m_widget2 = new QWidget(this);
m_widget2->setFixedSize(400, 400);
m_widget3 = new QWidget(this);
m_widget3->setFixedSize(400, 400);
// 创建 QStackedWidget,将三个 QWidget 添加到其中
m_stackedWidget = new QStackedWidget(this);
m_stackedWidget->addWidget(m_widget1);
m_stackedWidget->addWidget(m_widget2);
m_stackedWidget->addWidget(m_widget3);
// 创建 QComboBox,添加选项
m_comboBox = new QComboBox(this);
m_comboBox->addItem("Widget 1");
m_comboBox->addItem("Widget 2");
m_comboBox->addItem("Widget 3");
// 连接 QComboBox 的 currentIndexChanged() 信号和 QStackedWidget 的 setCurrentIndex() 槽函数
connect(m_comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), m_stackedWidget, &QStackedWidget::setCurrentIndex);
// 创建水平布局,将 QComboBox 和 QStackedWidget 添加到其中
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(m_comboBox);
layout->addWidget(m_stackedWidget);
// 创建 QWidget Q1,将水平布局设置为它的布局
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
}
MainWindow::~MainWindow()
{
delete m_widget1;
delete m_widget2;
delete m_widget3;
delete m_stackedWidget;
delete m_comboBox;
}
```
在这个示例代码中,我们在 QMainWindow 上创建了三个大小相同的 QWidget,并使用 QStackedWidget 实现了它们之间的切换。我们还创建了一个 QComboBox,用于选择要显示的 QWidget。最后,我们将 QComboBox 和 QStackedWidget 添加到一个水平布局中,并将该布局设置为 QMainWindow 的中央窗口部件。
阅读全文