1

Qtを使用して、データの視覚化を引き出しています。タイムラインに沿って特定の重要なポイントを示す線がありますが、下の情報がより明確に表示されるように、これらの線をビューから削除できるようにしたいと思います。

それらを視界から取り除く方法は理解していますが、問題は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にかなり慣れていません。ここ数日、Qtを学んでいます。誰か助けてもらえますか?

4

1 に答える 1

1

アイテムの数が多くなると処理が遅くなるため、特定のタイプを非表示にするためだけに、すべてのシーン アイテムを反復処理することはお勧めしません。

代わりに、行が作成されるたびにリストに追加します。非表示にする必要がある場合は、リストを繰り返して非表示にします。必要なメモリはわずかに多くなりますが、はるかに高速で安全であり、必要なコーディングも少なくて済みます。

于 2012-09-13T16:54:16.610 に答える