【发布时间】:2010-07-18 14:52:57
【问题描述】:
我对将 QT 框架与 C++ 结合使用相当陌生。我想知道:将我的域类基于 QObject 是个好主意吗?或者我应该只对层次结构中较高的类执行此操作? (更接近用户界面级别)。 QT 文档对此并不清楚:
取自 QT 文档:
元对象系统是一个 C++ 扩展,使该语言更适合真正的组件 GUI 编程。
显然,我想以一种结构良好的方式构建我的应用程序。在过去的几天里,我一直在浏览 QT 文档以找到这个问题的答案。我不想犯一些基本的错误,这会使我的应用程序永远瘫痪;-)。
我已经查看了 QObject 和 Qt 对象模型的基本文档。我还发现了一个freshmeat article,它有帮助,但并没有真正帮助我得出结论。让我感到困惑的是,QT 本身在这件事上似乎并不一致,因为并非所有 QT 类都使用 QObject 作为基类。
在我看来,使用 QObject 作为基类的优势:
- 层次结构
- 信号和槽
- 属性
- 能够使用受保护的指针
- 国际化
但是,在我的大多数域类中,我不需要任何这些功能。对此有最佳实践规则吗?或者规则应该是:如果您需要上述任何一点,请使用它?
希望我没有让这太混乱:-)
【问题讨论】:
-
QSharedPointer 和 QScopedPointer 可以应用于任何类,它们不是 QObject 类独有的,国际化也是如此,
tr是 QObject 上的一个静态函数,所以你可以在任何地方使用它