У вас есть два разных плагина.Очевидно, что один может быть приведен к ActionInterface
, но не к LabelInterface
, а другой может быть приведен к LabelInterface
, но не к ActionInterface
.
.загрузите оба плагина (и количество проверок 2), тогда можно безопасно соединиться между этими плагинами.Однако вы, похоже, пытаетесь использовать второй загруженный плагин, который будет служить и сигналом и слотом.Это потому, что каждый раз, когда вы запускаете код, вы перезаписываете и myAction
, и myLabel
.Итак, как минимум:
QObject* plugin = pluginLoader.instance();
if (plugin) {
ActionInterface* myActionTemp = qobject_cast<ActionInterface*>(plugin);
if (myActionTemp) {
myAction = myActionTemp;
pluginMenu->addAction(myAction->newAction());
verify++;
}
LabelInterface* myLabelTemp = qobject_cast<LabelInterface*>(plugin);
if (myLabelTemp) {
myLabel = myLabelTemp;
layout->addWidget(myLabel->newLabel());
verify++;
}
/* if (myAction and myLabel) would be less convoluted... */
if (verify == 2) {
connect(myAction, SIGNAL(pushMyAction()),
myLabel, SLOT(setTextforLabel()));
}
...
}
Тем не менее, это выглядит как довольно хрупкий дизайн, который может использовать некоторое переосмысление ...!