[英]How to integrate c++ and qml. Cannot use property from QML
Error: Cannot assign to non-existent property "setScale" 错误:无法分配给不存在的属性“ setScale”
This is my class. 这是我的课。
C++ header C ++标头
#include <QObject>
#include <QtQuick>
class Scene : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(int scale READ scale WRITE setScale)
public:
Scene();
void scaleChanged(int _val);
int scale() const;
void setScale(const int &scale);
protected:
int m_scale;
};
C++ source C ++源代码
#include "Scene.h"
void Scene::scaleChanged(int _val)
{
m_scale = _val;
qDebug()<<_val;
update();
}
int Scene::scale() const
{
return m_scale;
}
void Scene::setScale(const int &scale)
{
m_scale = scale;
qDebug()<<scale;
}
Qml file QML文件
Rectangle {
id: drawArea
color: "#ffffff"
Scene {
id: drawScene
anchors.fill: parent
anchors.centerIn: parent
scale: 1
}
}
Slider {
id: slider
value: 1
onMoved: drawScene.setScale = value
}
I trying use slider to change scale at Paint, but get error qrc:/Page1Form.ui.qml:64: Error: Cannot assign to non-existent property "setScale" F 我尝试使用滑块更改Paint的比例,但出现错误qrc:/Page1Form.ui.qml:64:错误:无法分配给不存在的属性“ setScale” F
drawScene.setScale
should be drawScene.scale
: the property is named scale
. drawScene.setScale
应该为drawScene.scale
:该属性名为scale
。 setScale
is its setter. setScale
是它的设置器。
scaleChanged
should be a signal and you have to add it of your property (with NOTIFY
). scaleChanged
应该是一个信号,您必须将其添加到您的属性中(使用NOTIFY
)。 It will be emitted when the value of scale has changed. 比例值更改时将发出该信号。
Q_PROPERTY(int scale READ scale WRITE setScale NOTIFY scaleChanged)
signals:
void scaleChanged(int val);
slots:
void debugScale(int val);
And then: 接着:
QObject::connect(this, &Scene::valueChanged,
this, &Scene::debugScale);
void Scene::debugScale(int val)
{
qDebug()<<_val;
update();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.