我尝试将来自外部共享库的信号连接到基本QWidget类插槽的过载插槽。
假设this
是从QWidget
派生的类的实例
class MyClass : public QWidget;
...
MyClass* this_instance = new MyClass;
我尝试了以下方法
connect(obj_from_sl, SIGNAL(signalFromSL()), this, SLOT(update());
// update() is QWidget's slot
// the "sl" suffixs stands for "shared library"
但是没有用。我有链接器错误。我搜索发现
无法使用SIGNAL
函数中的SLOT
/ connect
宏来连接外部共享库的信号。如果使用函数指针,则可能会出现。
好。让我们更改签名:
connect(obj_from_sl, &ClassFromSL::signalFromSL, this, &QWidget::update);
^ error comes here
和voilà
无法确定打算使用重载函数“
QWidget::update
”的哪个实例。
有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
QWidget::update()
函数具有不同的参数,因此对于使用新的信号/插槽语法,它需要显式转换
connect(obj_from_sl, &ClassFromSL::signalFromSL, this, static_cast<void (QWidget::*) )>(&QWidget::update));