• 3330阅读
  • 7回复

Qt5自定义插件的信号问题 [复制链接]

上一主题 下一主题
离线leonchiong
 

只看楼主 倒序阅读 楼主  发表于: 2014-01-06
想做一个自定义控件
部分内容都已经搞通 唯独信号这部分卡壳了
我在接口里定义的信号 没法在主程序里调用
求解
下面是代码
接口:
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()));
}
}


离线dbzhang800

只看该作者 1楼 发表于: 2014-01-06
因为没有 Q_OBJECT
离线leonchiong

只看该作者 2楼 发表于: 2014-01-06
回 1楼(dbzhang800) 的帖子
加上Q_OBJECT之后 插件编译不过
离线似水流年

只看该作者 3楼 发表于: 2014-01-07
兄弟,要使用信号和槽,必须继承自QObject类,你明显没有继承,当然编译不过了!
离线gzfstudy

只看该作者 4楼 发表于: 2014-01-07
Qt内插件只能以纯 C++ 接口的形式提供,不允许将这个接口继承QObject。如果需要将主程序与插件对象进行信号槽连接,需要在接口中提供一个类似getObject()的函数,其返回值是一个QObject *。这样,让插件将所需要进行信号槽连接的对象返回,从而完成与主程序的connect()函数
离线leonchiong

只看该作者 5楼 发表于: 2014-01-08
回 3楼(似水流年) 的帖子
既然我说加Q_OBJECT 肯定要继承QObject类的  我说的编译不过 就是继承之后编译不过
我现在已经解决这个问题  谢谢你的关注
离线leonchiong

只看该作者 6楼 发表于: 2014-01-08
回 4楼(gzfstudy) 的帖子
谢谢 我已经解决这个问题
再次感谢
离线webber644

只看该作者 7楼 发表于: 11-08
你好,请问能说一下是如何解决的吗?我也遇到了类似的问题,我创建了一个自定义控件,但是无法输出例如xy坐标值,slider的数值
快速回复
限100 字节
 
上一个 下一个