无法将来自外部共享库的信号连接到派生的 QWidget 的重载插槽 class
Cannot connect signal from an outer shared library to overloaded slot of QWidget derived class
我尝试将来自外部共享库的信号连接到基 QWidget class 插槽的过载插槽。
假设 this
是从 QWidget
派生的 class 的一个实例
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"
但是没用。我有链接器错误。我已经搜索并发现,那
在 connect
函数内使用 SIGNAL
/ SLOT
宏连接来自外部共享库的信号是不可能的。如果我使用函数指针可能是可能的。
好的。让我们更改签名:
connect(obj_from_sl, &ClassFromSL::signalFromSL, this, &QWidget::update);
^ error comes here
瞧瞧
cannot determine which instance of an overloaded function "QWidget::update
" is intended.
谁能帮我解决这个问题?
QWidget::update()
函数有不同的参数,因此需要显式转换以使用新的 signal/slot 语法
connect(obj_from_sl, &ClassFromSL::signalFromSL, this, static_cast<void (QWidget::*) )>(&QWidget::update));
我尝试将来自外部共享库的信号连接到基 QWidget class 插槽的过载插槽。
假设 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"
但是没用。我有链接器错误。我已经搜索并发现,那
在 connect
函数内使用 SIGNAL
/ SLOT
宏连接来自外部共享库的信号是不可能的。如果我使用函数指针可能是可能的。
好的。让我们更改签名:
connect(obj_from_sl, &ClassFromSL::signalFromSL, this, &QWidget::update);
^ error comes here
瞧瞧
cannot determine which instance of an overloaded function "
QWidget::update
" is intended.
谁能帮我解决这个问题?
QWidget::update()
函数有不同的参数,因此需要显式转换以使用新的 signal/slot 语法
connect(obj_from_sl, &ClassFromSL::signalFromSL, this, static_cast<void (QWidget::*) )>(&QWidget::update));