首页 > 解决方案 > 如何将类的属性从 c++ 获取到 QML

问题描述

我在 C++ 中有一个向量,其中每个元素都是同一类的对象。这些对象的属性是字符串和整数。
现在我想在 QML 中创建矩形,具体取决于向量中有多少元素(每个元素 1 个矩形),矩形的特征(例如 x 和 y 位置)取决于向量中对象的属性值(整数特性)。我的问题是:如何将这些数据从 c++ 导入 QML?以及如何使用 x/y 位置在这些值上创建矩形?
这是 cpp 文件的示例:

#include <iostream>
#include <vector>
#include <string>

class myClass{
    public:
        int xPosition;
        int yPosition;
        std::string color;

        myClass(int xPosition_, int yPosition_, std::string color_){
            xPosition = xPosition_;
            yPosition = yPosition_;
            color = color_;
        }
};

int createVec(){
    myClass objectOne(100, 100, "red");
    myClass objectTwo(200, 200, "blue");
    myClass objectThree(300, 300, "green");
    myClass objectFour(400, 400, "black");


    std::vector<myClass> vec;
    vec.push_back(objectOne);
    vec.push_back(objectTwo);
    vec.push_back(objectThree);
    vec.push_back(objectFour);

    for (int i = 0; i < vec.size(); i++){
        std::cout << vec[i].xPosition << " " << vec[i].yPosition << " " <<vec[i].color << std::endl;
    }
}

编辑:我试图主要通过做类似于这篇文章的事情来解决我的问题。但是我遇到了多个不同的问题,因为我对 QML、qt 和 c++ 非常陌生。首先我不知道如何将我的类转换为 Q_OBJECT,其次我不知道eatyourgreens 的含义:

在 QML 代码中,Thing 的属性可以通过模型作为 model.modelData.size 和 model.modelData.name 访问。

标签: c++qtqml

解决方案


你可能会使用

YourClass *yourClass = new YourClass();
    qmlView->rootContext()->setContextProperty("myClass", yourClass);
note: where your system calling the qml (it might be in main.cpp)

在 qml 文件中。你可能会得到这样的返回值的属性或方法

myClass.getFloorProperty();

推荐阅读