zoukankan      html  css  js  c++  java
  • QT的学习信号与槽实现两个窗体的联通

    #include "mywidget.h"
    
    MyWidget::MyWidget(QWidget *parent)
        : QWidget(parent)
    {
        b1.setParent(this);
        b1.setText("切换到子窗口");
        b1.move(100,100);
        resize(400,400);
        connect(&b1,&QPushButton::pressed,this,&MyWidget::MySolt);
        //处理子窗口的信息
        void (SubWidget::*ptr)(int,QString)=&SubWidget::mySignal;
        connect(&m_cd,ptr,this,&MyWidget::SoltParam);
    
    }
    
    MyWidget::~MyWidget()
    {
    #include "subwidget.h"
    
    SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
    {
         b2.setParent(this);
         b2.setText("切换到主窗口");
         b2.move(100,100);
         resize(400,400);
         connect(&b2,&QPushButton::pressed,this,&SubWidget::MySolt);
    
    }
    SubWidget::~SubWidget()
    {
    
    }
    
    void SubWidget::MySolt()
    {
        emit mySignal(250,"zhang");
    }
    
    
    #ifndef MYWIDGET_H
    #define MYWIDGET_H
    
    #include <QWidget>
    #include <QPushButton>
    #include "subwidget.h"
    #include <QDebug>
    
    
    class MyWidget : public QWidget
    {
        Q_OBJECT
    public:
        MyWidget(QWidget *parent = nullptr);
        ~MyWidget();
        void MySolt();
        void DealSolt();
        void SoltParam(int a,QString str);
    private:
        QPushButton b1;
        SubWidget m_cd;
    };
    
    #endif // MYWIDGET_H
    #ifndef SUBWIDGET_H
    #define SUBWIDGET_H
    
    #include <QWidget>
    #include <QPushButton>
    
    class SubWidget : public QWidget
    {
        Q_OBJECT
    public:
        explicit SubWidget(QWidget *parent = nullptr);
        ~SubWidget();
    signals:
        /*
         * 信号必须由这个关键字来声明
         * 信号没有返回值,但是可以修改
         * 信号就是函数的声明,只需声明,无须定义
         * 使用:emit mySignal();
         * 可以有参数,怎么接受?
         */
        void mySignal(int a,QString str);
    
    public slots:
        void MySolt();
    private:
        QPushButton b2;
    };
    
    #endif // SUBWIDGET_H
    
    
    }
    
    void MyWidget::MySolt()
    {
     m_cd.show();
     this->hide();
    }
    
    void MyWidget::SoltParam(int a,QString str)
    {
    
       qDebug() <<a<<str.toUtf8().data();
    }
    void MyWidget::DealSolt()
    {
        this->show();
        m_cd.hide();
    }
  • 相关阅读:
    远程发送和接收数据流生成图片
    iTextSharp 设置 PDF 所有页面背景图功能
    iTextSharp 生成 PDF 问题集合
    C# 中 IL/MSIL , CTS , CLS , CLR , JIT 分别是什么 ?
    django创建项目2 jojo
    selenium键盘操作 jojo
    python格式化 jojo
    安装了Django后,执行djangoadmin.py无法创建工程的解决办法 jojo
    django创建项目1 jojo
    python自带模块模拟鼠标和键盘操作 jojo
  • 原文地址:https://www.cnblogs.com/z2529827226/p/11694323.html
Copyright © 2011-2022 走看看