c++ - QT:将我的域对象基于 QObject 是个好主意吗?

标签 c++ qt qobject

我对将 QT 框架与 C++ 结合使用相当陌生。我想知道:将我的域类基于 QObject 是个好主意吗?或者我应该只对层次结构中较高的类执行此操作吗? (更接近用户界面级别)。 QT 文档对此并不清楚:

摘自QT文档:

The meta-object system is a C++ extension that makes the language better suited to true component GUI programming.

显然,我想以结构良好的方式构建我的应用程序。在过去的几天里,我一直在浏览 QT 文档以找到这个问题的答案。我不想犯一些基本错误,这会让我的申请永远瘫痪 ;-)。

我已经看过 QObject 和 Qt 对象模型的基本文档。我还找到了一个 freshmeat article这有助于但并没有真正帮助我得出结论。让我感到困惑的另一件事是 QT 本身在这件事上似乎并不一致,因为并非所有 QT 类都使用 QObject 作为基类。

在我看来,使用 QObject 作为基类的优点:

  • 层次结构
  • 信号与槽
  • 属性
  • 能够使用 protected 指针
  • 国际化

但是,在我的大多数领域类中,我不需要任何这些功能。对此有最佳实践规则吗?或者规则应该是:如果您需要上述任何一点,就使用它?

希望我没有让这太困惑:-)

最佳答案

一般来说,除非有“迫切需要”,否则您最好让您的域类保持“普通”。这为您在未来提供了最大的灵 active (例如,在非 Qt 环境中重新使用它们)。

关于c++ - QT:将我的域对象基于 QObject 是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3275983/

相关文章:

c++ - 继承子类不能使用Q_OBJECT

c++ - 从零开始构建 IP 语音

c++ - 使用 Qt Graphics 描绘轮廓

c++ - 我需要购买 Qt 框架吗?

Qthread 在 Golang 中只发出一个信号

没有复制构造函数的 C++ 赋值运算符

c++ - 使用 "double"输出带两位小数的值

c++ - Boost::asio - 如何中断阻塞的 tcp 服务器线程?

c++ - 基类的继承和指针

c++ - 如何在 linux 上使用 Qt 或任何其他 cpp 框架播放 wma 音频文件?