问题描述
我有一个接口,它是通过 unix socket 连接的。 接口包含信号,我想用插槽连接这些信号。 这是代码:
QDBusConnection socketConnection = QDBusConnection::connectToPeer(transactionUpdatePath,QStringLiteral("org.projectatomic.rpmostree1"));
m_transaction = new OrgProjectatomicRpmostree1TransactionInterface (QStringLiteral("org.projectatomic.rpmostree1"),QStringLiteral("/"),socketConnection,this);
transactionUpdatePath 是 unix:abstract=/tmp/rpm-ostree/dbus-ffRe5qiE
,有一种方法可以给我路径,就像这样。
因此,通过使用此路径,我可以连接到 m_transaction
此接口包含我想与插槽连接的信号。 这是我所做的,但它不起作用:
bool flag1 = socketConnection.connect(QStringLiteral("org.projectatomic.rpmostree1"),QStringLiteral("org.projectatomic.rpmostree1.Transaction"),QStringLiteral("Finished"),this,SLOT(finishTransaction(bool,QString)));
定义的插槽在这里:
void RpmOstreeTransaction::finishTransaction(bool sucess,QString error_message)
{
if(sucess){
AbstractResource::State newState;
switch(role()) {
case InstallRole:
case ChangeAddonsRole:
newState = AbstractResource::Installed;
break;
case RemoveRole:
newState = AbstractResource::None;
break;
}
m_app->setState(newState);
setStatus(DoneStatus);
deleteLater();
}
else {
qWarning() << error_message << Qt::endl;
setStatus(DoneWithErrorStatus);
}
}
我不知道为什么它不起作用,我还尝试了另一种将信号与插槽连接的方法,就是这样:(但它也不起作用)
connect(m_transaction,&OrgProjectatomicRpmostree1TransactionInterface::Finished,&RpmOstreeTransaction::finishTransaction);
任何建议。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)