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