zoukankan      html  css  js  c++  java
  • 关于QT5 自定义信号槽 以及信号槽的重载问题

    记录一下,自定义信号槽过程中遇到的错误。
    注意这部分即可
    **void(signaldemo:: *vcp)() = &(signaldemo::value_changed);
    void(signaldemo:: *vcp2)(QString) = &(signaldemo::value_changed);
    void(slotdemo:: nslot2)(QString) = &(slotdemo::slotfunc);
    void(slotdemo:: nslot1)() = &(slotdemo::slotfunc);

    #ifndef SIGNALDEMO_H
    #define SIGNALDEMO_H
    #include <QDebug>
    #include <QObject>
    
    class signaldemo:public QObject
    {
        Q_OBJECT
            
    public:
        signaldemo();
        void senddd();
    signals:
        void value_changed();
        void value_changed(QString );
    };
    
    #endif // SIGNALDEMO_H
    
    
    
    ```slot.cpp
    #ifndef SLOTDEMO_H
    #define SLOTDEMO_H
    
    #include <QObject>
    
    class slotdemo:public QObject
    {
        Q_OBJECT
    public:
        slotdemo();
    public slots:
        void slotfunc();
        void slotfunc(QString);
    };
    
    #endif // SLOTDEMO_H
    
    
    #include <QCoreApplication>
    #include "signaldemo.h"
    #include "slotdemo.h"
    #include <QObject>
    //#include <windows.h>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        //qDebug()<<"starting";
        signaldemo sd ;
        //    slotdemo st;
        //    void(slotdemo::*st)= &slotdemo::slotfunc;
        //    auto  *sd = new signaldemo();
        auto *st = new slotdemo();
        void(signaldemo:: *vcp)() = &(signaldemo::value_changed);
        void(signaldemo:: *vcp2)(QString) = &(signaldemo::value_changed);
        void(slotdemo:: *nslot2)(QString) = &(slotdemo::slotfunc);
        void(slotdemo:: *nslot1)() = &(slotdemo::slotfunc);
    //    QObject::connect(&sd,&signaldemo::value_changed,st,&slotdemo::slotfunc);  //注意是否为信号和槽函数
        QObject::connect(&sd,vcp2,st,nslot2);
        QObject::connect(&sd,vcp,st,nslot1);
        //    QObject::connect(&sd,&signaldemo::value_changed,&st,&slotdemo::slotfunc);
        //Sleep(1000);
        sd.senddd();
        return a.exec();
    }
    
    

    实现部分自己随便实现即可。

  • 相关阅读:
    pytest-html报告自定义字段
    Python SMTP发送邮件
    IE浏览器兼容测试工具 IETester
    全局ID生成--雪花算法改进版
    全局ID生成--雪花算法
    spring-cloud-sleuth/zipkin
    14.跑批到某个点突然所有批都断批
    13.分布式锁在不同环境引发的坑
    spring-cloud-gateway
    spring-cloud-netflix-config
  • 原文地址:https://www.cnblogs.com/neo3301/p/13169831.html
Copyright © 2011-2022 走看看