作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的自定义设计器小部件插件中,我有一个派生 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
在下面link你可以找到一个完整的例子
关于c++ - Qt 自定义小部件插件 Q_Property With Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172604/
我是一名优秀的程序员,十分优秀!