私のコードにqtreeviewに住むためのバグはありますか?
質問
PYQT 4.4を使用しています。
いくつかの写真を使用して表示するのが最適です。すべてのノードには0〜99の葉が必要です。 canFetchMore()
と fetchMore()
. 。しかし、何らかの理由で私にとっては不明なのは、これはルートノードに対してのみ機能します。 (写真1)
ノードを崩壊させて展開すると、追加の10値がロードされます。 (写真2&3)
また、コードが通話ごとに5つのみをロードするため、10の値をロードすることも奇妙です。 fetchMore()
, 、つまり、これはコードが停止してより多くのデータをロードする前に2回呼び出されます。
問題を示すために小さな例を書きました、ただそれを実行します python test.py
.
http://snipt.org/llh
このエラーの原因を知っている人はいますか?
解決
QTソース(v4.5)を見てみましたが、QAbstractItemviewとQTreeViewのv4.4とv4.5の間に大きな違いは期待できません)。
qabstractitemviewには木の概念がないので、呼び出すだけです fetchMore()
最上部のインデックス。それは呼び出します fetchMore()
いつ:
- ジオメトリが更新されます
- スクロールバーが移動されます
- 行が挿入されます
- 現在のアイテムは、自動閉鎖ドラッグアンドドロップ操作の結果として変更されます
qtreeviewはさらに呼び出します fetchMore()
いつ:
- アイテムが拡張されています(これは基本的にそれが呼ぶ唯一の時間です
fetchMore()
非ルートインデックス付き) - ビューのレイアウトは、
expandAll()
とcollapseAll()
最良の解決策は、qtreeviewをサブクラス化して呼び出すことだと思います fetchMore()
適切な場所で、適切なインデックスがあります。
所属していません StackOverflow