标题:connect槽函数使用基类的protected函数,使用Qt5的方法,报错?
作者:caiwei_cs
日期:2017-03-09 15:00
内容:
//基类
class classbase : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE classbase(int num, QString name, QObject *parent = 0);
signals:
public slots:
protected:
int i;
QString str;
void sig();
};
//派生类
class classderiveA : public classbase
{
Q_OBJECT
public:
Q_INVOKABLE classderiveA(int num, QString name,QJsonObject json, QObject *parent = 0);
signals:
void kk();
public slots:
protected:
QJsonObject obj;
void mm();
//void sig();
};
classderiveA::classderiveA(int num, QString name, QJsonObject json, QObject *parent) :
classbase(num,name,parent),
obj(json)
{
connect(this, &classderiveA::kk, this, &classbase::sig); //报错
connect(this, &classderiveA::kk, this, &classderiveA::sig); //通过
connect(this, SIGNAL(kk()), this, SLOT(sig())); //通过
sig();
}
报错:/home/caiwei/QtTest/factorytest/ft/classbase.h:26: error: 'void classbase::sig()' is protected
void sig();
^
为什么下两句不报错?
#1 [dosmlp 03-10 13:42]
这样写
connect(this, &classderiveA::kk, [=](){classbase::sig();});
this是指向classderiveA的,不是基类