在我的自定义设计器小部件插件中,我有一个派生QProgressBar的自定义小部件。我有一个字段来选择一个确定的或不确定的状态。为此,我简单地用这两个州制作了一个枚举。我想通过实现Q_PROPERTY宏在QtDesigner小部件属性区域中使用这些值,如下所示:
class QDESIGNER_WIDGET_EXPORT QtMaterialProgress : public QProgressBar
{
Q_OBJECT
Q_PROPERTY(QColor progressColor WRITE setProgressColor READ progressColor)
Q_PROPERTY(QColor backgroundColor WRITE setProgressColor READ backgroundColor)
Q_PROPERTY(Material::ProgressType progressType WRITE setProgressType READ progressType)
.....
这里也是枚举声明:
enum ProgressType
{
DeterminateProgress,
IndeterminateProgress
};
我希望这段代码能够在QtDesigner的属性编辑器中生成一个带有两个状态的QComboBox,但是我得到的不是这样的。我还尝试将Q_ENUMS(PropertyType)
添加到标题中,但没有运气。
答案 0 :(得分:2)
您必须使用Q_ENUM
(非Q_ENUMS
,因为它已从Qt 5.5弃用:https://doc.qt.io/qt-5/whatsnew55.html),如下例所示:
#ifndef TESTWIDGET_H
#define TESTWIDGET_H
#include <QWidget>
class TestWidget : public QWidget
{
Q_OBJECT
Q_PROPERTY(EnumTest test READ test WRITE setTest)
public:
TestWidget(QWidget *parent = 0);
enum EnumTest { ENUM0, ENUM1, ENUM2, ENUM3 };
Q_ENUM(EnumTest)
EnumTest test() const;
void setTest(const EnumTest &test);
private:
EnumTest mTest;
};
#endif
在以下link中,您可以找到完整的示例