c++ - 从 QGraphicsSimpleTextItem foreach 循环获取字符串?

标签 c++ qt

我正在使用 qrect 和简单文本项制作图像注释系统。

我试图将 QGraphicssimpletext 项中的字符串值存储到 JSON 文件中,以保存和加载注释框。矩形工作正常,但我无法理解如何获取字符串值。这是我试图循环遍历每个项目的 foreach,并且由于文本项目是矩形的子项,因此位置并不重要。

foreach(QGraphicsItem* item, items())
{
    arrayPosX.push_back(item->x());
    arrayHeight.push_back(item->boundingRect().height());
    arrayWidth.push_back(item->boundingRect().width());
    arrayPosY.push_back(item->y());
    arrayAnnotation.push_back(item->?);
}

简单文本和矩形项目都使用

添加到场景中
itemToDraw = new QGraphicsRectItem;
this->addItem(itemToDraw);
simpleTextToDraw = new QGraphicsSimpleTextItem;
this->addItem(simpleTextToDraw);

我只是想知道如何从简单的文本项中获取字符串值,以便允许保存和加载字符串和框,而不仅仅是当前系统可以执行的框。

最佳答案

您必须进行强制转换并验证指针不为空:

// ...
arrayPosY.push_back(item->y());
if(QGraphicsSimpleTextItem* text_item = qgraphicsitem_cast<QGraphicsSimpleTextItem *>(item)){
    arrayAnnotation.push_back(text_item->text());
}

关于c++ - 从 QGraphicsSimpleTextItem foreach 循环获取字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61563731/

相关文章:

c++ - 在 main.cpp 或 mainwindow.cpp 中的何处编写我的代码

c++ - 实现扩展内省(introspection)交换算法

c++ - QTcpSocket 发送的数据比想要的多 - Qt/C++

c++ - windows下Qt5 QSlider调色板无效果

c++ - 重载较少,然后运算符返回相反的 bool 值

c++ - 设计器中自定义小部件的 QT QIcon 属性

qt - 程序意外结束

C++函数模板编译

c++ - 在用户定义的异常析构函数中释放动态内存

c++ - 从字符串列表的列表的映射中获取字符串