• 4、两个窗体跳转


    新建项目,QWidget,取消勾选ui

    b1按钮,按下,触发showSecondWin()函数

    b2按钮,按下,触发sendSignal()函数(发射MySignal()信号)

    子窗体w2,发射的MySignal()信号,触发showMainWin()函数

    /*mywidget.h代码*/
    #ifndef MYWIDGET_H
    #define MYWIDGET_H
    
    #include <QWidget>
    #include <QPushButton>//引入按钮
    #include "secondwindow.h" //子窗口头文件
    
    class MyWidget : public QWidget
    {
        Q_OBJECT
    
    public:
        MyWidget(QWidget *parent = 0);
        ~MyWidget();
        void showSecondWin();//自定义的槽函数
        void showMainWin();
    private:
        QPushButton b1;//按钮b1
        SecondWindow w2;//子窗体
    };
    
    #endif
    /*secondwindow.h代码*/
    #ifndef SECONDWINDOW_H
    #define SECONDWINDOW_H
    
    #include <QWidget>
    #include<QPushButton>//引入按钮
    
    class SecondWindow : public QWidget
    {
        Q_OBJECT
    public:
        SecondWindow(QWidget *parent = nullptr);
        void sendSignal();//自定义的槽函数
    
    signals: //信号必须有signals关键字,信号无返回值,可以有参数
        void MySignal(); //自定义信号
    
    private:
        QPushButton b2;//按钮b2
    };
    
    #endif
    /*mywidget.cpp代码*/
    #include "mywidget.h"
    
    MyWidget::MyWidget(QWidget *parent)
        : QWidget(parent)
    {
        setWindowTitle("主窗体");
        resize(400,100); //窗体大小
    
        b1.setText("打开子窗体");
        b1.setParent(this);//控件b1在MyWidget窗体上
        //b1控件,按下,调用showMainWin()函数
        connect(&b1,&QPushButton::pressed,this,&MyWidget::showMainWin);
        //w2窗体,发送信号,调用showSecondWin()函数
        connect(&w2,&SecondWindow::MySignal,this,&MyWidget::showSecondWin);
    }
    void MyWidget::showMainWin()//自定义的槽函数
    {
        w2.show();//显示子窗体
        this->hide();//隐藏本窗体
    }
    void MyWidget::showSecondWin()//自定义的函数
    {
        this->show();
        w2.hide();
    
    }
    
    MyWidget::~MyWidget()
    {
    
    }
    /*secondwindow.cpp代码*/
    #include "secondwindow.h"
    
    SecondWindow::SecondWindow(QWidget *parent) : QWidget(parent)
    {
        setWindowTitle("子窗体");
        resize(400,100); //窗体大小
    
        b2.setText("返回主窗体");
        b2.setParent(this);//按钮b2在SecondWindow上
        //按下b2,发送信号
        connect(&b2,&QPushButton::pressed,this,&SecondWindow::sendSignal);
    }
    void SecondWindow::sendSignal()//自定义的槽函数
    {
        emit MySignal();//发送信号
    }
  • 相关阅读:
    Redis和Memcache的区别分析
    javascript 与jquery为每个p标签增加onclick方法
    repeater单双行颜色不同,gridview repeater DataList 鼠标经过改变背景颜色
    sql 错误提示
    .net获取select控件中的文本内容
    您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序
    html5 调用摄像头
    openfire配置MSSQL说明(数据库设置)
    Openfire 的安装和配置
    JS 等前端学习。
  • 原文地址:https://www.cnblogs.com/xixixing/p/10897632.html
Copyright © 2020-2023  润新知