标题:Qt5自定义插件的信号问题
作者:leonchiong
日期:2014-01-06 17:03
内容:
想做一个自定义控件
大部分内容都已经搞通 唯独信号这部分卡壳了
我在接口里定义的信号 没法在主程序里调用
求解
下面是代码
接口:
class DHomePage_Plugin
{
public:
virtual ~DHomePage_Plugin() {}
virtual QString getname() const = 0;
signals:
void sendMsg();
};
主程序调用部分:
void loadHomePage()
{
QPluginLoader *pluginLoader= new QPluginLoader(tr("%1DHomePage.dll").arg(gPathDll), this);
QObject *pluginObject = pluginLoader->instance();
if (pluginObject)
{
DHomePage_Plugin *monster= qobject_cast(pluginObject);
ui->stackedWidget->addWidget(monster->createGUI());
connect(monster,SIGNAL(sendMsg()),this,SLOT(receiveMsg()));
}
}
#1 [dbzhang800 01-06 17:11]
因为没有 Q_OBJECT
#2 回 1楼(dbzhang800) 的帖子 [leonchiong 01-06 20:14]
加上Q_OBJECT之后 插件编译不过
#3 [似水流年 01-07 13:20]
兄弟,要使用信号和槽,必须继承自QObject类,你明显没有继承,当然编译不过了!
#4 [gzfstudy 01-07 18:02]
Qt内插件只能以纯 C++ 接口的形式提供,不允许将这个接口继承QObject。如果需要将主程序与插件对象进行信号槽连接,需要在接口中提供一个类似getObject()的函数,其返回值是一个QObject *。这样,让插件将所需要进行信号槽连接的对象返回,从而完成与主程序的connect()函数
#5 回 3楼(似水流年) 的帖子 [leonchiong 01-08 09:20]
既然我说加Q_OBJECT 肯定要继承QObject类的我说的编译不过 就是继承之后编译不过
我现在已经解决这个问题谢谢你的关注