[英]How to integrate c++ and qml. Cannot use property from QML
錯誤:無法分配給不存在的屬性“ setScale”
這是我的課。
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 ++源代碼
#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文件
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
}
我嘗試使用滑塊更改Paint的比例,但出現錯誤qrc:/Page1Form.ui.qml:64:錯誤:無法分配給不存在的屬性“ setScale” F
drawScene.setScale
應該為drawScene.scale
:該屬性名為scale
。 setScale
是它的設置器。
scaleChanged
應該是一個信號,您必須將其添加到您的屬性中(使用NOTIFY
)。 比例值更改時將發出該信號。
Q_PROPERTY(int scale READ scale WRITE setScale NOTIFY scaleChanged)
signals:
void scaleChanged(int val);
slots:
void debugScale(int val);
接着:
QObject::connect(this, &Scene::valueChanged,
this, &Scene::debugScale);
void Scene::debugScale(int val)
{
qDebug()<<_val;
update();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.