如何将 Double 从 Qt c++ 代码传递到 QML 代码
How to pass double from Qt c++ code to QML code?
我在Qt中有这段代码
int main(int argc, char *argv[]) {
QGuiApplication app(argc,argv);
QQuickView view;
QUrl q(QStringLiteral("QML:///places_map.qml"));
view.setSource(QUrl(QStringLiteral("qrc:///places_map.qml")));
//I've tried this to init qml properties
QObject *object = view.rootObject();
object->setProperty("latitude", 48.4656371);
object->setProperty("longitude", 31.04900455);
QQuickItem *item = view.rootObject();
item->setProperty("device_latitude", 48.4656371);
item->setProperty("device_longitude", 35.04900455);
}
还有我的 qml 文件:
import QtQuick 2.0
import QtPositioning 5.5
import QtLocation 5.6
Rectangle {
width: 720
height: 480
property double latitude: 0
property double longitude: 0
property double device_latitude: 0 //48.4656371
property double device_longitude: 0 //35.54900455
property variant location: QtPositioning.coordinate(latitude, longitude)
property variant deviceLocation: QtPositioning.coordinate(device_latitude, device_longitude)
Plugin {
id: myPlugin
name: "osm"
}
PlaceSearchModel {
id: searchModel
plugin: myPlugin
searchTerm: "Pizza"
searchArea: QtPositioning.circle(deviceLocation)
Component.onCompleted: update()
}
Map {
id: map
anchors.fill: parent
plugin: myPlugin;
center: location
zoomLevel: 13
MapItemView {
model: searchModel
delegate: MapQuickItem {
coordinate: deviceLocation //QtPositioning.coordinate(device_latitude, device_longitude)
anchorPoint.x: image.width * 0.5
anchorPoint.y: image.height
sourceItem: Column {
Image { id: image; source: "marker.png" }
Text { text: title; font.bold: true }
}
}
}
}
}
在 qml 代码属性中,纬度和经度双精度设置地图上的视图但地图显示的地方纬度 = 0 和纵向 = 0
如果我在 qml 代码中设置了正确的坐标,一切正常如何从 c++ 代码中初始化此值,以便地图显示我的城市?
使用Q_PROPERTY会更好。公开C++的属性
我让它像这样工作:
主.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickItem>
#include <QQuickView>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
QQuickItem *item = view.rootObject();
item->setProperty("number", 22.002);
view.show();
return app.exec();
}
主.qml
import QtQuick 2.4
import QtQuick.Window 2.2
Rectangle{
visible: true
width: 640
height: 480
property double number : 0
Text {
id: textEdit
text: number
verticalAlignment: Text.AlignVCenter
anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 20
}
}
相关文章:
- 从C++实例化QML
- Qt Quick-如何仅从c++代码与qml属性交互
- 如何从C++代码中检索 QML 的文本字段中的文本?
- QML filedialog设置标题来自C 代码
- 将Qt的QML代码转换为C++
- 如何将 Double 从 Qt c++ 代码传递到 QML 代码
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- 与C++代码中的 qml 对象交互
- Qt QML:由c++代码提供的具有动态图像数量的UI
- 如何关闭QML/JavaScript代码中的窗口(涉及C 代码)
- 如何在QML QTLocation图上添加C QT代码的POI
- 使用cpp代码从加载的qml访问qml对象
- 如何从另一个线程的 cpp 代码同步调用 qml 信号处理程序
- 从C++代码创建单独的 QML 窗口
- 如何连接来自c++代码的嵌套qml项的信号
- 从QML代码调用C++函数
- QML是在编译时被翻译成本机代码,还是在运行时被解释为JavaScript在web浏览器中的运行方式
- 如何从c++代码中发出特定QML项上下文中的信号
- 使用组件时将c++绑定到QML代码
- 从 QT 中的C++代码访问 QML 元素