我是第一次使用 QML,很难在控制层和业务层之间组织我的代码。
以一种非常实际的方式,我的所有事件都应该发送到 C++ 控制层(一个名为 MyController 的 C++ 类,它继承自 QObject)。现在 MyController 应该知道业务层(假设它是一个名为 MyBusiness 的 C++ 类)并调用其相关方法。
我的 MyBusiness 实际上是我放在 main.cpp 中的较低级别类的复杂集合。
以前我使用的是 QtWidget,我能够通过上面提到的这个复杂的聚合创建 MyBusiness,创建 MyController 并将 MyBusiness 提供给 < strong>MyController 让它完成它的工作。
现在由于 QML 的工作方式,MyController 实际上暴露给 QML(通过 QML 注册)并且 MyController Q_INVOKABLE 函数从 QML 调用并且应该依次调用 < strong>MyBusiness 功能。
但是 MyController 现在实际上是在 QML 中创建的,所以我不能再让 MyController 知道 MyBusiness。
在我的案例中,最佳做法是什么?
最佳答案
我喜欢这样:
import QtQuick 2.5
Item {
MyController {
business: businessObj
}
MyBusiness {
id: businessObj
}
}
在MyController.h
中:
class MyController
{
Q_OBJECT
Q_PROPERTY(MyBusiness* business MEMBER m_business);
...
MyBusiness *m_business;
关于c++ - QML 控制层和业务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38574191/