写一段代码,用QT实现两个页面相互跳转
时间: 2023-09-13 17:05:28 浏览: 176
### 回答1:
首先,你需要在 QT Creator 中创建一个 QWidget 类的窗口,然后在其中添加两个 QPushButton 对象,分别用于跳转到两个不同的页面。你还需要创建两个 QWidget 类的页面,用于显示在窗口中。
下面是一个示例代码,实现了在点击 "跳转到页面 1" 按钮时跳转到页面 1,在点击 "跳转到页面 2" 按钮时跳转到页面 2 的功能:
```
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "page1.h"
#include "page2.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Page1 *page1 = new Page1(); // 创建页面 1 对象
Page2 *page2 = new Page2(); // 创建页面 2 对象
// 将页面 1 和页面 2 添加到窗口的 stacked widget 中
ui->stackedWidget->addWidget(page1);
ui->stackedWidget->addWidget(page2);
// 连接跳转到页面 1 的按钮的信号和槽
connect(ui->pushButtonPage1, &QPushButton::clicked, [=](){
ui->stackedWidget->setCurrentWidget(page1); // 跳转到页面 1
});
// 连接跳转到页面 2 的按钮的信号和槽
connect(ui->pushButtonPage2, &QPushButton::clicked, [=](){
ui->stackedWidget->setCurrentWidget(page2); // 跳转到页面 2
});
}
MainWindow::~MainWindow()
{
delete ui;
}
```
在这段代码中,我们使用
### 回答2:
在QT中实现两个页面相互跳转可以使用QStackedWidget控件和槽函数来实现。以下是一个实现示例:
```c++
#include <QApplication>
#include <QStackedWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建一个QStackedWidget控件
QStackedWidget stackWidget;
// 创建页面1的按钮和页面2
QPushButton btnPage1("跳转到页面2");
QWidget page1;
QVBoxLayout layout1;
layout1.addWidget(&btnPage1);
page1.setLayout(&layout1);
QPushButton btnPage2("跳转到页面1");
QWidget page2;
QVBoxLayout layout2;
layout2.addWidget(&btnPage2);
page2.setLayout(&layout2);
// 将页面1和页面2添加到QStackedWidget控件
stackWidget.addWidget(&page1);
stackWidget.addWidget(&page2);
// 相互跳转的槽函数
QObject::connect(&btnPage1, &QPushButton::clicked, [&]() {
stackWidget.setCurrentIndex(1);
});
QObject::connect(&btnPage2, &QPushButton::clicked, [&]() {
stackWidget.setCurrentIndex(0);
});
// 显示QStackedWidget控件
stackWidget.show();
return app.exec();
}
```
上述代码创建了一个QStackedWidget控件,用于存放页面1和页面2的QWidget。通过QVBoxLayout将按钮添加到页面中,并使用setCurrentIndex槽函数来实现相互跳转。点击按钮跳转到另一页。最后,显示QStackedWidget控件。
注意:在使用此代码之前需要先安装QT并完成环境搭建。
### 回答3:
在使用QT进行页面跳转时,可以使用QStackedWidget来实现。
首先,我们需要创建两个页面的类:Page1和Page2。在这两个类中,我们可以添加需要展示的控件和信号槽函数。为了能够实现页面的跳转,我们在Page1的构造函数中添加了一个按钮,当按钮被点击时,会触发一个信号,我们会在该信号关联的槽函数中进行页面跳转。
Page1类:
```cpp
#include <QPushButton>
#include <QStackedWidget>
class Page1 : public QWidget
{
Q_OBJECT
public:
explicit Page1(QWidget *parent = nullptr)
: QWidget(parent)
{
QPushButton *btn = new QPushButton("跳转到Page2");
connect(btn, &QPushButton::clicked, this, &Page1::onBtnClicked);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(btn);
setLayout(layout);
}
signals:
void jumpToPage2();
private slots:
void onBtnClicked()
{
emit jumpToPage2();
}
};
```
在Page2类的构造函数中,我们添加了一个按钮,该按钮会触发一个信号,用于页面的返回。
Page2类:
```cpp
#include <QPushButton>
#include <QStackedWidget>
class Page2 : public QWidget
{
Q_OBJECT
public:
explicit Page2(QWidget *parent = nullptr)
: QWidget(parent)
{
QPushButton *btn = new QPushButton("返回");
connect(btn, &QPushButton::clicked, this, &Page2::goBack);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(btn);
setLayout(layout);
}
signals:
void backToPage1();
private slots:
void goBack()
{
emit backToPage1();
}
};
```
接下来,在主窗口的构造函数中,我们创建了一个QStackedWidget,用于存放这两个页面。然后,我们将Page1和Page2添加到QStackedWidget中,并连接Page1和Page2之间的信号槽函数,用于实现页面的相互跳转。
MainWindow类:
```cpp
#include <QMainWindow>
#include <QStackedWidget>
class MainWindow: public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
QStackedWidget *stackedWidget = new QStackedWidget;
Page1 *page1 = new Page1;
Page2 *page2 = new Page2;
stackedWidget->addWidget(page1);
stackedWidget->addWidget(page2);
connect(page1, &Page1::jumpToPage2, [=]() {
stackedWidget->setCurrentWidget(page2);
});
connect(page2, &Page2::backToPage1, [=]() {
stackedWidget->setCurrentWidget(page1);
});
setCentralWidget(stackedWidget);
}
};
```
最后,在main.cpp中,我们创建了QApplication和MainWindow对象,并显示主窗口。
```cpp
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
```
这样,就实现了使用QT实现两个页面相互跳转的代码。当点击Page1上的按钮时,会跳转到Page2页面;而点击Page2上的按钮时,会返回到Page1页面。
阅读全文