C++ 可以创建自己的Qt注释吗?

C++ 可以创建自己的Qt注释吗?,c++,qt,annotations,C++,Qt,Annotations,是否可以像在Java中一样在Qt中创建自己的注释 @interface Test { boolean value(); } 编辑: 好吧,为了澄清我为什么要这么做,我会删掉一点,然后解释一下。也许这根本不可能 我想创建具有一些属性的类。在GUI应用程序中,我希望使用这些类,并使用QMetaObject动态生成GUI(QML) 为了限制用户输入,我想添加诸如“minValue”和“maxValue”之类的注释 但我现在发现,用QMetaObject读取注释是不可能的,因为它们不像@moh

是否可以像在Java中一样在Qt中创建自己的注释

@interface Test {
    boolean value();
}
编辑: 好吧,为了澄清我为什么要这么做,我会删掉一点,然后解释一下。也许这根本不可能

我想创建具有一些属性的类。在GUI应用程序中,我希望使用这些类,并使用
QMetaObject
动态生成GUI(QML)

为了限制用户输入,我想添加诸如“minValue”和“maxValue”之类的注释

但我现在发现,用
QMetaObject
读取注释是不可能的,因为它们不像@mohaboje提到的那样存在。有
Q_CLASSINFO
宏,但它只描述类而不是属性


有没有办法做到这一点?或者有人能给我一些提示吗?< /P> < P>我不知道你为什么要这么做,这是C++,不是java。另一种方法是使用#defines,它可以为您提供一个近似的解决方案:

#define INTERFACE virtual
#define DECL_INTERFACE = 0
#define OVERRIDE override
#define IMPLEMENTS : public
然后在接口类中,您可以执行以下操作:

class InterfaceClass {
   INTERFACE std::string compute() DECL_INTERFACE;
   INTERFACE void something_else() DECL_INTERFACE;
}
在你的班级里:

class Subclass IMPLEMENTS InterfaceClass {
   std::string compute() OVERRIDE {
     ....
   }

   void something_else() OVERRIDE {}
} 

对于方法,可以使用tag属性添加注释

从文档中复制:

#ifndef Q_MOC_RUN
// define the tag text as empty, so the compiler doesn't see it
#  define MY_CUSTOM_TAG
#endif
...
private slots:
    MY_CUSTOM_TAG void testFunc();
-

main窗口;
win.show();
int functionIndex=win.metaObject()->indexOfSlot(“testFunc()”);
QMetaMethod mm=win.metaObject()->方法(functionIndex);
这篇文章对我帮助很大。
MainWindow win;
win.show();

int functionIndex = win.metaObject()->indexOfSlot("testFunc()");
QMetaMethod mm = win.metaObject()->method(functionIndex);
qDebug() << mm.tag(); // prints MY_CUSTOM_TAG