私はこれらのクラスを使用しています:
QHash
: シーンのすべてのオブジェクトを表現しています (このクラスは変更できません)
QList
: 選択したすべてのオブジェクトを表示しています。IDが含まれています(として保存されますint
)
//DrawSelectedObjects(){
QHash<QString, SceneObject*>& hash=sc->getObj();
QList<int> tempList = HitsList;
int counter =0;
for (QHash<QString,SceneObject*>::ConstIterator i = hash.begin();i!=hash.end();++i) {
if (tempList.startsWith(counter)) {
.
Draw_as_selected()
.
tempList.removeOne(counter);
}
}
}
たとえば、オブジェクト #77 を選択すると、その ID がHitslist
( QList
) に保存されます。
その後、HitsList
ソートされDrawSelectedObjects()
て呼び出されます。
QHash
untilcounter=77
とを繰り返す必要がありDraw_as_selected()
ます。その後、 の最初の要素QList
が削除され、2 番目の要素が前面に引き出されます。
この関数は、1 つのオブジェクトが選択されるたびに呼び出されます。インポートされた小さなシーンではすべて問題ありませんが、10MB を超えるファイルを使用している場合、出力の遅延が見られます (巨大なQHash
.
これを行うためのより効率的な方法を教えてください。どんな助けでも大歓迎です。
編集:
返信ありがとうございます。問題は、それを取り除くことができないことですQList<int>
(iI は、OpenGL 選択スタックの上に整数のみをプッシュできます)。
したがって、上記の解決策の別の方法は、 のQString.toInt()
すべての要素に対して実行しQHash
、それらを に保存することQList<int>
です。
QString
事実は...どのようにハッシュを使用して正しいハッシュを見つけますint
か?QString
QList