gpt4 book ai didi

c++ - Qt - 在 QGraphicsScene 中仅编辑 QGraphicsLineItems

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:20 25 4
gpt4 key购买 nike

我正在使用 Qt 绘制一些数据可视化。我有指示时间轴上某些重要点的线,但我希望能够从 View 中删除这些线,以便下面的信息更清晰可见。

我知道如何将它们从视线中移除,但问题是如何找到场景 View 中哪些 QGraphicsItems 是线,哪些不是。

我试过用

try {
qgraphicsitem_cast<QGraphicsLineItem>(scene->items()[i]);
} catch (...) {
}

但这甚至无法编译。我尝试检查 qgraphicsitem_cast() 的输出以查看是否为 0,但编译器也不喜欢这样。

这是我最新的代码:

void Plotter::showHideLines() {
int i;
QGraphicsLineItem l;

for (i = 0; i < scene->items().count(); i++) {
try {
qgraphicsitem_cast<QGraphicsLineItem>(scene->items()[i]);
scene->items()[i]->setVisible(!scene->items()[i]->isVisible());
} catch (...) {
}
}
}

忽略l,我试过别的东西后懒得删除它。

我是 Qt 的新手,最近几天才开始学习它。有人可以帮忙吗?

最佳答案

我不建议遍历每个场景项目,只是为了隐藏某种类型,因为当项目数量变大时事情会变慢。

相反,无论何时创建一行,都将其添加到列表中。当需要隐藏它们时,遍历列表并隐藏它们。它占用的内存稍多,但速度更快、更安全,并且需要的代码更少。

关于c++ - Qt - 在 QGraphicsScene 中仅编辑 QGraphicsLineItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com