gpt4 book ai didi

c++ - 如何与 Sailfish Silica/QML 中的 Slider 的值进行交互?

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:29 25 4
gpt4 key购买 nike

我似乎完全迷失在 QML 中的表单声明中。我有一个正确设置了 Q_PROPERTies 的 C++ 对象,我可以访问 QML 中该类的对象,并且我想在 QML 中使用 slider 。如何使 Slider 的值更新对象中属性的信息,反之亦然?

最佳答案

如果它与常规 QML 类似,则以下方法可行。

上下文属性

使用明确的 Binding或使用 Slider的 valueChanged 信号:

#include <QGuiApplication>
#include <QtQml>

class Object : public QObject
{
Q_OBJECT
Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged)
public:
explicit Object(QObject *parent = 0) :
QObject(parent),
mValue(0)
{
}

qreal value() const {
return mValue;
}

void setValue(qreal value) {
if (value != mValue) {
mValue = value;
emit valueChanged();
}
}
signals:
qreal valueChanged();
private:
qreal mValue;
};

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

Object object;

QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("object", &object);
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));

return app.exec();
}

#include "main.moc"

ma​​in.qml:

import QtQuick 2.3
import QtQuick.Controls 1.2

ApplicationWindow {
width: 400
height: 400
visible: true

Binding {
target: object
property: "value"
value: slider.value
}

Slider {
id: slider
// You can also react to the valueChanged signal of Slider:
//onValueChanged: object.value = value
}
}

注册的QML类型

使用简单的绑定(bind):

#include <QGuiApplication>
#include <QtQml>

class Object : public QObject
{
Q_OBJECT
Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged)
public:
explicit Object(QObject *parent = 0) :
QObject(parent),
mValue(0)
{
}

qreal value() const {
return mValue;
}

void setValue(qreal value) {
if (value != mValue) {
mValue = value;
emit valueChanged();
}
}
signals:
qreal valueChanged();
private:
qreal mValue;
};

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

qmlRegisterType<Object>("Test", 1, 0, "Object");

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));

return app.exec();
}

#include "main.moc"

ma​​in.qml:

import QtQuick 2.3
import QtQuick.Controls 1.2

import Test 1.0

ApplicationWindow {
width: 400
height: 400
visible: true

Object {
id: object
value: slider.value
onValueChanged: print(value)
}

Slider {
id: slider
}
}

关于c++ - 如何与 Sailfish Silica/QML 中的 Slider 的值进行交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803554/

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