是否可以创建自己的QT注释

Is it possible to create own Qt annotations?

本文关键字:QT 注释 自己的 创建 是否      更新时间:2023-10-16

是否可以在qt中像java中创建自己的宣传?

@interface Test {
    boolean value();
}

编辑:好的,为了使我为什么要这样做,我会罢工并尝试解释一下。也许甚至不可能。

我想创建具有一些属性的类。在GUI应用程序中,我想使用QMetaObject

为了限制用户输入,我认为添加了诸如" Minvalue"answers" MaxValue"之类的no <<p>但是我现在发现的是,没有可能用QMetaObject朗读no录,因为它们像@mohabouje一样存在。有Q_CLASSINFO宏,但这仅描述类而不是属性。

有什么办法做到这一点吗?还是有人可以给我一些提示?

对于方法,有可能使用标签属性,添加注释

https://doc.qt.io/qt-5/qmetamethod.html#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();

-

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

我不知道为什么要这样做,这是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 {}
}