【发布时间】:2019-07-30 09:37:56
【问题描述】:
在我的自定义设计器小部件插件中,我有一个派生 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) 添加到标题中,但没有成功。
【问题讨论】:
-
不要使用 Q_ENUMS,使用 Q_ENUM,它对我有用:imgur.com/a/C17lX
-
将
Q_ENUM(Material::ProgressType)添加到我的标题中,但仍然没有,我不得不将枚举的父级更改为继承QObject的公共类,但我仍然没有在设计器中得到任何列表。你把Q_ENUM()放在哪里了 -
这是我的测试:github.com/eyllanesc/stackoverflow/tree/master/49172604,如果你分享一个可以复制的代码,它会帮助更多的人,但这种神秘的态度不会有太大的帮助,我建议你提供一个minimal reproducible example
-
@eyllanesc 工作正常,如果你发布它,我会接受它和赏金。
标签: c++ qt qt5 qt-designer