1

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

我了解如何将它们从视线中移除,但问题是如何QGraphicsItems在场景视图中找到哪些是线条,哪些不是。

我试过使用

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

但这甚至无法编译。我尝试检查qgraphicsitem_cast()if is 的输出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 很陌生,最近几天我才开始学习它。有人可以帮忙吗?

4

1 回答 1

1

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

相反,每当创建一行时,将其添加到列表中。当需要隐藏它们时,遍历列表并隐藏它们。它需要更多的内存,但更快、更安全,并且需要更少的编码。

于 2012-09-13T16:54:16.610 回答