我正在努力解决这个问题,我可以找到任何解决方案。所以我有这个 QML 代码
Dial {
id: volumeDial
property int speedValue: volumeDial.value.toFixed(0)
objectName: "speedDial"
from: 0
value: 42
to: 100
stepSize: 1
Layout.alignment: Qt.AlignHCenter
Layout.minimumWidth: 64
Layout.minimumHeight: 64
Layout.preferredWidth: 128
Layout.preferredHeight: 128
Layout.maximumWidth: 128
Layout.maximumHeight: 128
Layout.fillHeight: true
Label {
text: volumeDial.value.toFixed(0)
horizontalAlignment: Text.AlignLeft
fontSizeMode: Text.FixedSize
color: "white"
font.pixelSize: Qt.application.font.pixelSize * 3
anchors.centerIn: parent
}
我的问题是我想将 int 变量中的值存储volumeDial.value
在一个 int 变量中,并且在我移动表盘以使用 newvolumeDial.value
等更新 int 变量之后。这是我的 .cpp 代码:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QSettings>
#include <QQuickStyle>
#include <QIcon>
#include <QDebug>
#include <QQmlProperty>
int main(int argc, char *argv[])
{
QGuiApplication::setApplicationName("Automotive");
QGuiApplication::setOrganizationName("QtProject");
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QGuiApplication app(argc, argv);
QIcon::setThemeName("automotive");
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/qml/automotive.qml"));
if (engine.rootObjects().isEmpty())
return -1;
QObject *rootObject = engine.rootObjects().first();
QObject *qmlObject = rootObject->findChild<QObject*>("speedDial");
if(qmlObject)
{
// qDebug() << "Speed value:" << QQmlProperty::read(qmlObject, "speedValue").toInt();
qDebug()<< qmlObject->property("value").toInt();
}
return app.exec();
}
现在我可以从 中获取初始值,value.volumeDial
但我想在释放拨盘上的左键单击后获取每个值。在 Dial Signal Documentation 中存在一个名为moved() 的函数,但我不知道如何使用它,也不知道该函数是否能解决我的问题。我恳请您向我展示一些可以解决我的问题的代码。