C++Qt代码实现点击QRadiobutton切换到不同的界面
时间: 2023-09-12 20:10:05 浏览: 95
实现该功能需要使用Qt中的信号与槽机制,具体步骤如下:
1. 在Qt Designer中创建两个界面,分别为"界面1"和"界面2"。
2. 在"界面1"中添加一个QRadioButton,设置其text为"切换到界面2"。
3. 在"界面2"中添加一个QRadioButton,设置其text为"切换到界面1"。
4. 在"界面1"中添加一个QStackedWidget控件,用于切换不同的界面。
5. 在"界面2"中添加一个QStackedWidget控件,用于切换不同的界面。
6. 在"界面1"中将QStackedWidget控件的currentIndex设置为0,表示默认显示第一个界面。
7. 在"界面2"中将QStackedWidget控件的currentIndex设置为0,表示默认显示第一个界面。
8. 在"界面1"中添加一个槽函数,用于响应QRadioButton的点击事件。在该槽函数中,将QStackedWidget控件的currentIndex设置为1,实现界面切换。
9. 在"界面2"中添加一个槽函数,用于响应QRadioButton的点击事件。在该槽函数中,将QStackedWidget控件的currentIndex设置为1,实现界面切换。
10. 在"界面1"和"界面2"中分别连接QRadioButton的clicked()信号与对应的槽函数,实现点击QRadioButton切换到不同的界面的功能。
示例代码如下:
```c++
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStackedWidget>
#include <QRadioButton>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_radioButton_clicked();
void on_radioButton_2_clicked();
private:
QStackedWidget *stackedWidget1;
QStackedWidget *stackedWidget2;
QRadioButton *radioButton;
QRadioButton *radioButton2;
};
#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
stackedWidget1 = new QStackedWidget(this);
QWidget *page1 = new QWidget(this);
stackedWidget1->addWidget(page1);
QWidget *page2 = new QWidget(this);
stackedWidget1->addWidget(page2);
stackedWidget1->setCurrentIndex(0);
stackedWidget2 = new QStackedWidget(this);
QWidget *page3 = new QWidget(this);
stackedWidget2->addWidget(page3);
QWidget *page4 = new QWidget(this);
stackedWidget2->addWidget(page4);
stackedWidget2->setCurrentIndex(0);
radioButton = new QRadioButton(page1);
radioButton->setText(tr("切换到界面2"));
radioButton->setGeometry(10, 10, 120, 20);
connect(radioButton, SIGNAL(clicked()), this, SLOT(on_radioButton_clicked()));
radioButton2 = new QRadioButton(page3);
radioButton2->setText(tr("切换到界面1"));
radioButton2->setGeometry(10, 10, 120, 20);
connect(radioButton2, SIGNAL(clicked()), this, SLOT(on_radioButton_2_clicked()));
setCentralWidget(stackedWidget1);
}
MainWindow::~MainWindow()
{
}
void MainWindow::on_radioButton_clicked()
{
stackedWidget1->setCurrentIndex(1);
setCentralWidget(stackedWidget2);
}
void MainWindow::on_radioButton_2_clicked()
{
stackedWidget2->setCurrentIndex(1);
setCentralWidget(stackedWidget1);
}
```