【发布时间】:2022-11-02 21:16:09
【问题描述】:
我想像这样添加 C++ 类缺口矩形.hpp到 QML:
#ifndef NOTCHEDRECTANGLE_HPP
#define NOTCHEDRECTANGLE_HPP
#include <QtQml/qqmlregistration.h>
#include <QQuickPaintedItem>
class NotchedRectangle : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
QML_ELEMENT
public:
NotchedRectangle();
void paint(QPainter* painter) override;
QColor color() const;
void setColor(QColor color);
signals:
void colorChanged();
private:
QColor m_color;
};
#endif // NOTCHEDRECTANGLE_HPP
我有 qmake 构建系统,但不知道 - 我应该在 qmake 文件中添加什么。
我的文件系统如下所示:
我试图将这个字符串添加到 qmake 文件中:
CONFIG += qmltypes
QML_IMPORT_NAME = UI.NR
QML_IMPORT_MAJOR_VERSION = 1
INCLUDEPATH += UI/NotchedRectangle
但它们会导致错误:
[Makefile.Debug:1175: qlauncher_metatypes.json] 错误 1
你能帮我吗?
【问题讨论】:
-
你应该使用
qmlRegisterType。 -
@m7913d 我使用了 qmlRegisterType - 它工作正常。但这是旧技术,Qt Designer 不支持
-
@m7913d 在
Qt5.15之后它实际上是旧的。 (reference) -
@SMR 谢谢,但是有很多自定义 C++ 对象。 NotchedRectangle 是最简单和最好的例子。我在没有 Qt Designer 的情况下使用了 qmlRegisterType。但现在我想添加对 Qt Designer 的支持并使用现代功能 :)