大佬教程收集整理的这篇文章主要介绍了c – 如何记录与Q_PROPERTY同名的访问者功能?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Qt的property system使得可以在给定属性上使用Qt的元对象系统:
// example class and documentation class Widget : public QObject { Q_OBjeCT Q_PROPERTY(int size READ size WRITE setSize NOTIFY sizeChanged) public: Widget(QObject * parent = nullptr) : QObject(parent){} int size() const; public slots: void setSize(int new_sizE); signals: void sizeChanged(int); //!< signals a size change private: int m_size = 0; //!< the Widget's size,see #size. };@H_404_5@如果现在在实现中使用doxygen
//! @property size is the size of our widget //! @brief Set the widget's size to @a new_size. void Widget::setSize(int new_sizE) { if(new_size != m_sizE) { m_size = new_size; emit sizeChanged(m_sizE); } } //! @brief Returns the widget's size. int Widget::size() const { return m_size; }@H_404_5@只有setSize的文档才能正确生成. size()的文档被误认为属性的文档.上面的代码就像是一样
//! @property size //! @brief Returns the widget's size. int Widget::size() const { return m_size; }@H_404_5@被使用了. @fn Widget :: size()const和任何其他doxygen特殊命令似乎都没有帮助:size()生成的文档保持为空并最终在size(property)文档中.
原因是doxygen的findmember实现.如果你使用doxygen -d findmembers,你可以看到size(属性)和size()(函数)“匹配”:
findMemberDocumentation(): root->type=`int' root->inside=`' root->name=`Widget::size' root->args=`() const ' section=6000000 root->spec=0 root->mGrpId=-1 findMember(root=0x197efe0,funcDecl=`int Widget::size() const ',related=`',overload=0,isFunc=1 mGrpId=-1 tArgList=(nil) (#=0) spec=0 lang=200 findMember() Parse results: namespacename=`' className=`Widget` funcType=`int' funcSpec=`' funcName=`size' funcArgs=`() const' funcTempList=`' funcDecl=`int Widget::size' related=`' exceptions=`' isRelated=0 isMemberOf=0 isFriend=0 isFunc=1 1. funcName=`size' 2. member name exists (2 members with this Name) 3. member deFinition found,scope needed=`Widget' scope=`Widget' args=`' filename=/tmp/test/example.cpp 4. class deFinition Widget found 5. matching `'`() const' className=Widget namespacename= 6. match results of matchArguments2 = 1 @H_404_5@您甚至可以使用另一个非const变量int size()来重现它.您将最终得到三个具有相同名称的成员. Doxygen目前无法处理具有相同名称的属性和函数,在这种情况下不会记录getter.
如果您不需要属性文档,可以在Doxyfile中禁用Q_PROPERTY宏(如documented):
ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES PredefineD = Q_PROPERTY(X)=@H_404_5@这样,词法分析器将不会扫描Q_PROPERTY.
以上是大佬教程为你收集整理的c – 如何记录与Q_PROPERTY同名的访问者功能?全部内容,希望文章能够帮你解决c – 如何记录与Q_PROPERTY同名的访问者功能?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。