coordinatereceiver.h
#include <QObject>
#include <QPointF>
#include <QVector>
#include <QDebug>
// 定义全局变量来存储坐标点
//QVector<QPointF> globalCoordinates;
class CoordinateReceiver : public QObject
{
Q_OBJECT
public:
explicit CoordinateReceiver(QObject *parent = nullptr) : QObject(parent) {}
public slots:
// 用于接收 QML 发送的坐标点列表
void receiveCoordinates(QVector<QPointF> coordinates1) {
for (const auto &point : coordinates1) {
qDebug() << "Coordinate:" << point;
}
}
};
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "coordinatereceiver.h"
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
CoordinateReceiver handler;
engine.rootContext()->setContextProperty("CoordinateReceiver", &handler);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
Window {
visible: true
width: 640
height: 480
title: "Send Coordinates to C++"
Button {
id: sendButton
text: "Send Coordinates"
anchors.centerIn: parent
onClicked: {
var coordinates = []
for (var i = 0; i < 30; ++i) {
// 这里简单生成一些示例坐标点,你可以根据实际需求修改
coordinates.push(Qt.point(i * 10, i * 20))
}
// 发送坐标点到 C++ 端
CoordinateReceiver.receiveCoordinates(coordinates)
}
}
}