何时应该从QObject派生一个类?

3

我正在开发一个Qt应用程序,想知道是否有任何好处来创建 QObject 类,除了给它们添加信号和槽之外。


文档中列出了QObjects可以做什么的清单。 - 463035818_is_not_a_number
一个重要的事情是能够使用 Q_INVOKABLE 和 Q_PROPERTY 宏从 QML 脚本化你的对象。 - Jimmy
1个回答

3
除了分配信号/槽功能之外,QObject还在C ++类上添加了一些反射功能。
如果要添加QObject的子集,可以使用Q_GADGET,它会添加一些反射功能和诸如Q_ENUM,Q_PROPERTY等内容。
文档中有更多关于it的信息。

C++和反射对我来说都很新奇! - user2249683
1
Qt通过MOC(元对象编译器)添加了一些反射功能,Qt的代码不是标准的C++代码,这就是为什么它需要在运行之前先运行元编译器的原因。 - dfranca
2
Qt代码是标准的C++代码。moc只是在自己编写的代码之外生成代码,两者都符合标准。 - Frank Osterfeld
1
谢谢你的回答。这正是我在寻找的,我会去寻找那些特殊属性。也感谢你提供Q_GADGET的提示! - Plouff
@FrankOsterfeld 嗯,那就试着编译Qt代码,不使用MOC的信号/槽机制。MOC生成的代码确实是标准的C++,但并不是你所写的代码。 - dfranca
@danielfranca:这是标准的C++代码,只是不完整 :) (如果没有moc,将会出现未定义符号链接器错误,但没有编译错误) - Frank Osterfeld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接