QT开发基础--widget切换同大小的窗口

  • this->setWindowTitle(“串口调试窗口”);//设置窗口名称

1、新建一个需要设计增加的ui界面
在这里插入图片描述
然后是一些固定的模板选择,这里模板的选择必须根据功能进行选择,如果是自己加入文件控件的界面需要自己设计的界面选择Widget不然后面自己设置不了界面,以及大小的设置。在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
最后到达新设置的ui界面的名称widget设计的基本内容。
在这里插入图片描述
最后新建ui界面完成
在这里插入图片描述
2、实现主界面跳转新建ui界面

  • ①、引用新建ui界面的头文件,放在主界面的widget.h文件中。

  • ②、用头文件的类名在主界面的构造函数创建对象。
    在这里插入图片描述

  • ③、在需要跳转的按钮或者图片按钮等控制的控件,在其槽函数添加对象.show()就可以显示新的界面
    在这里插入图片描述

  • ④、次界面跳转显示回主界面
    同时在次界面也需要相同的按钮或者图片的触发控件,跳转回主界面。

  • ⑤、次界面槽函数wifi.cpp

#include "wifi.h"
#include "ui_wifi.h"
#include<QString>
#include<QPushButton>

Wifi::Wifi(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Wifi)
{
    ui->setupUi(this);
    this->setWindowTitle("WIFI调试窗口");
}

Wifi::~Wifi()
{
    delete ui;
}

void Wifi::on_pushButton_clicked()
{
    emit wifisignal();
}

次界面wifi.h

#ifndef WIFI_H
#define WIFI_H

#include <QWidget>

namespace Ui {
class Wifi;
}

class Wifi : public QWidget
{
    Q_OBJECT

public:
    explicit Wifi(QWidget *parent = 0);
    ~Wifi();

private:
    Ui::Wifi *ui;
    Wifi *b;

signals:
    void wifisignal();

private slots:
    void on_pushButton_clicked();
};

#endif // WIFI_H

  • ⑥、在主界面中槽函数 connect(&X,&Wifi::wifisignal,this,&Widget::dealwifi);
    槽函数点击的时候隐藏该页面回转主界面。
void Widget::dealwifi()
{

   X.hide();
    show();

}
以下是一个简单的实现,其中使用了QStackedWidget控件来管理子窗口,通过信号槽机制来实现子窗口之间的切换。 Mainwindow.h文件: ```cpp #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStackedWidget> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_toolButton_clicked(); void on_menu1_triggered(); void on_menu2_triggered(); void on_menu3_triggered(); private: QStackedWidget *stackedWidget; QWidget *widget1, *widget2, *widget3; }; #endif // MAINWINDOW_H ``` Mainwindow.cpp文件: ```cpp #include "mainwindow.h" #include <QToolButton> #include <QMenuBar> #include <QMenu> #include <QAction> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 创建工具栏和工具按钮 QToolBar *toolBar = addToolBar(tr("Tool Bar")); QToolButton *toolButton = new QToolButton(this); toolButton->setText(tr("Open Sub Window")); toolButton->setMenu(new QMenu(this)); toolBar->addWidget(toolButton); // 创建菜单和菜单项 QMenuBar *menuBar = new QMenuBar(this); QMenu *menu = new QMenu(tr("Sub Window"), this); QAction *menu1 = new QAction(tr("Sub Window 1"), this); QAction *menu2 = new QAction(tr("Sub Window 2"), this); QAction *menu3 = new QAction(tr("Sub Window 3"), this); menu->addAction(menu1); menu->addAction(menu2); menu->addAction(menu3); menuBar->addMenu(menu); setMenuBar(menuBar); // 创建子窗口并添加到QStackedWidget控件中 stackedWidget = new QStackedWidget(this); widget1 = new QWidget(this); widget2 = new QWidget(this); widget3 = new QWidget(this); stackedWidget->addWidget(widget1); stackedWidget->addWidget(widget2); stackedWidget->addWidget(widget3); // 设置子窗口的背景颜色 widget1->setStyleSheet("background-color: red;"); widget2->setStyleSheet("background-color: green;"); widget3->setStyleSheet("background-color: blue;"); // 设置子窗口的布局和内容 QVBoxLayout *layout1 = new QVBoxLayout(widget1); QLabel *label1 = new QLabel(tr("Sub Window 1"), widget1); layout1->addWidget(label1); QVBoxLayout *layout2 = new QVBoxLayout(widget2); QLabel *label2 = new QLabel(tr("Sub Window 2"), widget2); layout2->addWidget(label2); QVBoxLayout *layout3 = new QVBoxLayout(widget3); QLabel *label3 = new QLabel(tr("Sub Window 3"), widget3); layout3->addWidget(label3); // 关联信号和槽函数 connect(toolButton->menu(), SIGNAL(triggered(QAction*)), this, SLOT(on_toolButton_clicked())); connect(menu1, SIGNAL(triggered()), this, SLOT(on_menu1_triggered())); connect(menu2, SIGNAL(triggered()), this, SLOT(on_menu2_triggered())); connect(menu3, SIGNAL(triggered()), this, SLOT(on_menu3_triggered())); // 设置主窗口大小和标题 setCentralWidget(stackedWidget); setFixedSize(400, 300); setWindowTitle(tr("QStackedWidget Example")); } MainWindow::~MainWindow() { } void MainWindow::on_toolButton_clicked() { toolButton->showMenu(); } void MainWindow::on_menu1_triggered() { stackedWidget->setCurrentWidget(widget1); } void MainWindow::on_menu2_triggered() { stackedWidget->setCurrentWidget(widget2); } void MainWindow::on_menu3_triggered() { stackedWidget->setCurrentWidget(widget3); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值