• 3719阅读
  • 4回复

[提问]C++11标准库类如何使用信号槽机制 [复制链接]

上一主题 下一主题
离线424670725
 

只看楼主 倒序阅读 楼主  发表于: 2016-09-15
现在写了个基类
  1. class base_class
  2. {
  3. public:
  4.     virtual ~base_class() {}
  5.     virtual std::string base_type(){ return ""; }
  6.     virtual int execute() = 0;
  7. };
又写了个派生类
  1. class class_2 : public base_class
  2. {
  3.     Q_OBJECT
  4. public:
  5.     ~class_2(){}
  6.     virtual int execute();
  7. signals:
  8.     void sig_finished();
  9. };
连接到主界面
  1. std::shared_ptr<base_class> test = std::shared_ptr<base_class>( new class_2);
  2.     connect(test.get(), SIGNAL(sig_finished()), this, SLOT(slot_init_sys()), Qt::QueuedConnection);
这样子会提示找不到信号函数,如果基类base_class继承QObject的话,又提示错误
  1. error: undefined reference to `vtable for base_class'
  2. error: undefined reference to `base_class::qt_metacast(char const*)'
  3. error: undefined reference to `base_class::qt_metacall(QMetaObject::Call, int, void**)'
  4. moc_class_2.cpp:-1: error: undefined reference to `base_class::staticMetaObject'
  5. error: undefined reference to `vtable for base_class'


请各位大侠指点指点!!!!


离线kaon

只看该作者 1楼 发表于: 2016-09-15
请继承QObject,不谢
离线424670725

只看该作者 2楼 发表于: 2016-09-17
回 kaon 的帖子
kaon:请继承QObject,不谢 (2016-09-15 20:30) 

基类已经继承QObject了
离线dbzhang800

只看该作者 3楼 发表于: 2016-09-18
重新运行一下qmake,或者在你的.pro中随便加个空行
离线424670725

只看该作者 4楼 发表于: 2016-09-18
回 dbzhang800 的帖子
dbzhang800:重新运行一下qmake,或者在你的.pro中随便加个空行 (2016-09-18 10:55) 

您说的正确,我通过这样操作解决了这个问题!感谢!!
快速回复
限100 字节
 
上一个 下一个