栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT,按钮点击切换窗体。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QT,按钮点击切换窗体。

        先推荐一本书,《杀死一只知更鸟》,我对这本书印象最深的就是让我读到了孩子的天真善良。

        看了很多博主写的,都不错,但是我决定自己写个清晰地。

        一切代码敲不出的原因皆是逻辑问题。


        首先要清楚一个逻辑问题

  • 主页面点击按钮,主页面隐藏 ,子窗体显示。
  • 子窗体点击按钮,发送信号,子窗体隐藏
  • 主窗体接收信号,调用函数(即显示主窗体自己)

    看代码之前,先在UI上添加按钮,转到槽。

        主窗体.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include "mainwindow.h"            //包含子窗体的头文件

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    MainWindow son;//子窗体

private slots:
    void on_pushButton_clicked();//主窗体点击  跳转到子窗体
    void show_myself();        //这个是收到信号源后  调用的函数 显示的主窗体自己

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

子窗体.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();//按钮点击发送信号  自己隐藏



signals:
    void showMain();            //自定义信号  是一个信号不需要定义
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

主窗体.cpp

#include "widget.h"
#include "ui_widget.h"





Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("主窗体");
    connect(&son,SIGNAL(showMain()),this,SLOT(show_myself()));

}

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


void Widget::on_pushButton_clicked()
{


    this->hide();                                       //隐藏主窗体
    son.show();                                   //显示子窗体
}

void Widget::show_myself()
{
    this->show();
    //son.hide();
}

子窗体.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"





MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("子窗体");
}

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

void MainWindow::on_pushButton_clicked()
{
    //返回主界面
       emit showMain();        //发射showMain信号
       this->hide();            //  隐藏
}




        好了,到此结束。一切皆逻辑。

       

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号