現在、いくつかの計算幾何学を行うライブラリを作成中です。私のアルゴリズムの結果を視覚化するために(そしてそれらをインタラクティブな設定で使用するために)、小さなビューア/ツールをQt
に書き込むことに決めましたが、このビューアからコアロジックを分離したままにしておきます。だから今、私はさまざまなアイテムの束を含むQGraphicsScene
、しかし、私はQGraphicsRectItems
で唯一興味を持っています独自のアルゴリズムで使用するためにある型を他の型にマッピングする
for(auto* item : scene) {
if(QGraphicsRectItem* c = qgraphicsitem_cast<QGraphicsRectItem*>(item)) {
// ... do stuff
}
}
マイライブラリは現在、自分のタイプ
struct rectangle {
double x,y;
double w,h;
};
と上で動作するアルゴリズムを定義しますそれら。私はarbitrarly位置付けrectangles
のコレクションを取り、お互いの隣にそれらすべてを配置する方法を
void layout(std::vector<rectangle>& rs) { ... }
持って想像してみてください。
このアルゴリズムをシーン内のQGraphicsRectItems
で使用したいと考えています。あなたはどうしますか? QGraphicsItems
をrectangles
に変換し、ベクトルに長方形を格納し、std::unordered_map<rectangle*,QGraphicsRectItem*>
を使用して、どのアイテムに属しているかを記録しておくことを考えました。私が処理を終えた後、rectangles
私はベクトルを反復してシーンのアイテムに変更を適用することができました。
これは方法ですか?どのようにこの問題を解決しますか?多分私のデザインは最初から欠陥がありますか?
'ただ値を変更layout'ない、またはそれは長方形の指数を動き回るのですか? – Yakk