找回密码
 立即注册
收起左侧

Qt5自定义插件的信号问题

2
回复
5603
查看
[复制链接]
累计签到:75 天
连续签到:1 天
来源: 2014-1-6 16:54:57 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
想做一个自定义控件
部分内容都已经搞通 唯独信号这部分卡壳了
我在接口里定义的信号 没法在主程序里调用
求解
下面是代码
接口:
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<DHomePage_Plugin*>(pluginObject);
ui->stackedWidget->addWidget(monster->createGUI());
connect(monster,SIGNAL(sendMsg()),this,SLOT(receiveMsg()));
}
}
回复

使用道具 举报

尚未签到

2014-1-6 21:29:51 显示全部楼层
我只写过QML插件,原理应该是一样的。

定义信号之后,qml插件里面的类要至少实例化一个,才能用到里面的信号。不知道普通的插件是不是一个道理
回复 支持 反对

使用道具 举报

累计签到:75 天
连续签到:1 天
2014-1-8 09:14:07 显示全部楼层
我已经自己解决这个问题
主要问题在主程序部分
主程序调用部分:
void loadHomePage()
{
QPluginLoader *pluginLoader= new QPluginLoader(tr("%1DHomePage.dll").arg(gPathDll), this);
QObject *pluginObject = pluginLoader->instance();
if (pluginObject)
{
DHomePage_Plugin *monster  = qobject_cast<DHomePage_Plugin*>(pluginObject);
ui->stackedWidget->addWidget(monster->createGUI());
//connect(monster,SIGNAL(sendMsg()),this,SLOT(receiveMsg())); //把这里改成下面这行就可以了
connect(pluginObject ,SIGNAL(sendMsg()),this,SLOT(receiveMsg()));
}
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了