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