• 2788阅读
  • 1回复

[提问]connect槽函数使用基类的protected函数,使用Qt5的方法,报错? [复制链接]

上一主题 下一主题
离线caiwei_cs
 

只看楼主 倒序阅读 楼主  发表于: 2017-03-09
  1. //基类
  2. class classbase : public QObject
  3. {
  4.     Q_OBJECT
  5. public:
  6.     Q_INVOKABLE classbase(int num, QString name, QObject *parent = 0);
  7. signals:
  8. public slots:
  9. protected:
  10.     int i;
  11.     QString str;
  12.     void sig();
  13. };

  1. //派生类
  2. class classderiveA : public classbase
  3. {
  4.     Q_OBJECT
  5. public:
  6.     Q_INVOKABLE classderiveA(int num, QString name,QJsonObject json, QObject *parent = 0);
  7. signals:
  8.     void kk();
  9. public slots:
  10. protected:
  11.     QJsonObject obj;
  12.     void mm();
  13. //    void sig();
  14. };

  1. classderiveA::classderiveA(int num, QString name, QJsonObject json, QObject *parent) :
  2.     classbase(num,name,parent),
  3.     obj(json)
  4. {
  5.     connect(this, &classderiveA::kk, this, &classbase::sig); //报错
  6.     connect(this, &classderiveA::kk, this, &classderiveA::sig); //通过
  7.     connect(this, SIGNAL(kk()), this, SLOT(sig())); //通过
  8.     sig();
  9. }

报错:/home/caiwei/QtTest/factorytest/ft/classbase.h:26: error: 'void classbase::sig()' is protected
     void sig();
          ^
为什么下两句不报错?



离线dosmlp

只看该作者 1楼 发表于: 2017-03-10
这样写
connect(this, &classderiveA::kk, [=](){classbase::sig();});

this是指向classderiveA的,不是基类
快速回复
限100 字节
 
上一个 下一个