c++ - 如何将类的属性从 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 访问。
解决方案
你可能会使用
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();
推荐阅读
- java - Authenticator 和 PeerAuthenticator 不工作 Appengine 端点
- mysql - 如何删除存储外键的表的行?
- scala - 类型转换 Dataframe 为空字段返回“null”
- python - 是否有任何 YouTube API 可以将特定视频分享到 Facebook 和 Twitter
- ruby-on-rails - Rails 不检测文件更改并且 config.reload_classes_only_on_change 使服务器太慢
- gcc - 用户空间中的跳转标签修补
- c++ - 如何拥有两个同名但返回类型不同的纯虚方法
- angular - 如何在 Angular 5 中更改 ng-template 变量
- python - Django:固定装置对象不可检索
- javascript - 创建具有扩展行的基本表