Qt QGraphicsItemのセットをループし、選択したグラフアイテム内の最大X値を見つける方法を教えてください。私は動作しているようだが、最小値をNULLに設定するのが理想的ではないことを思い出しています。私がそれをしている唯一の理由は、そうでなければ、値が非常に遠く離れた何かを返すからです。私はこれを最も効率的な方法でやっているような気がしません。実際のグラフ項目自体の幅を考慮してください。QGraphicsItemsで最大のX pos値を見つける
float max = NULL;
foreach (QGraphicsItem* item, items) {
if (!item) continue;
if (item->type() == NexusBlockItem::Type) {
float x = item->pos().x() + item->sceneBoundingRect().width()*.5;
if (max == NULL) max = x;
if (x > max) {
max = x;
}
}
}
'bool'フラグは少し残念ですが、私はこれらの厄介なCマクロを決して覚えていないので、通常は' std :: numeric_limits.max() 'で2番目のアプローチを使用します。 [cppreference](http://en.cppreference.com/w/cpp/types/numeric_limits)によると、それは 'FLOAT_MAX'ではなく' FLT_MAX'と呼ばれ、C++ 11では 'std :: '-max()'の代わりにnumeric_limits .lowest() 'を使います。 –
.5の理由は、各グラフィックアイテムのアンカーポイントが境界矩形の中心に設定されているためです。だから私はそれを補う必要があり、グラフィック項目の最も遠い右端を見つける。 – JokerMartini