【发布时间】:2019-06-20 15:39:34
【问题描述】:
我的部分代码是两个 C++ 类“ClassA”和“ClassB”,它们都继承自 QObject。
在它的某些方法中,ClassB 需要同步请求存储在 ClassA 中的数据。
ClassA
是否有类似于信号/插槽的 Qt API 可以用于它?
我能想到两种可能的选择,但我不确定 如果它们在架构上是正确的:
1) 在 ClassA 中定义 Q_INVOKABLE 函数,该函数将返回所需的数据作为其返回值,并在 ClassB 中调用它。
但我不确定 Q_INVOKABLE 是否可以用于 C++/QML 绑定以外的其他用途,以及在其他情况下如何正确注册它。
2) 分别在 ClassB/ClassA 中创建常规信号/槽对。
在 ClassB 中发出的信号将用于从 ClassA 请求数据,并将有一个指针作为其输入 arg,该指针将指向存储数据的位置。 ClassA 中的 slot 会将数据写入此指针。
void ClassA::slot(type *ptr)
{
// write data to ptr
}
void ClassB::signal(type *ptr)
【问题讨论】:
-
为什么不直接给A类加个方法直接调用呢?
-
目前这两个对象之间的通信是通过信号/槽。所以我认为我的情况可能有类似的情况。