qt4.4.3でのQVariant / QTreeWidgetItem / iteratorの問題
-
03-07-2019 - |
質問
qtアプリには、QTreeWidgetのコンテンツを設定する前に入力されたこのオブジェクトがあります:
QList<QTreeWidgetItem*> items;
この方法でQListに入力します:
QVariant qv; // I need this for "attaching" to the item my linuxPackage object
qv.setValue(linuxPackage);
packRow->setData(1, Qt::UserRole,qv); // packRow is my own object inherited from QTreeWidgetItem, I "put" the QVariant into it
items.append(packRow); // then I put my item into the QList
作業の最後に、私のQListにはほぼ1000個のアイテムがあります。
それらを繰り返し処理する必要があり、各項目について&quot; linuxPackage&quot;を取得する必要があります。この(テスト済みおよび動作中の)方法によるデータ:
Pkg linuxPackage = this->data(1,Qt::UserRole).value<Pkg>(); // Pkg is my own class for the linuxPackage object
だから、私はこの方法で必要なデータを抽出しようとしています:
QList<QTreeWidgetItem*>::iterator iter;
for (iter = items.begin(); iter != items.end(); ++iter){
Pkg pack = iter->data(1,Qt::UserRole).value<Pkg>();
}
しかし、何も機能しません。プログラムをコンパイルすることさえできません。助けて! :D
解決
おそらく:
(*iter)->data(1,Qt::UserRole).value<Pkg>();
ところで、Qt4でこれを行う簡単な方法:
foreach (const QTreeWidgetItem *item, items) {
Pkg pack = item->data(1,Qt::UserRole).value<Pkg>();
}
少なくとも、 const_iterators
=)
QList<QTreeWidgetItem*>::const_iterator iter;
for (iter = items.constBegin(); iter != items.constEnd(); ++iter){
...
}
所属していません StackOverflow