关于QT5 自定义信号槽 以及信号槽的重载问题

1 篇文章 0 订阅

记录一下,自定义信号槽过程中遇到的错误。
注意这部分即可
**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();
}

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值