gpt4 book ai didi

c++ - Qt 自定义小部件插件 Q_Property With Enum

转载 作者:行者123 更新时间:2023-11-30 03:25:11 25 4
gpt4 key购买 nike

在我的自定义设计器小部件插件中,我有一个派生 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) 添加到 header ,但没有成功。

最佳答案

您必须使用 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

enter image description here

在下面link你可以找到一个完整的例子

关于c++ - Qt 自定义小部件插件 Q_Property With Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com