pyQtを使用しています。 QTreeView/StandardItemModelで子アイテムの並べ替えを無効にするにはどうすればよいですか?QTreeViewで子アイテムの並べ替えを無効にする
1
A
答えて
4
です。
または、QStandardItemというサブクラスを作成し、そのless than演算子を再実装します。
ここでは後者の方法を示していますシンプルな例です:
from random import sample
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.view = QtGui.QTreeView(self)
self.view.setHeaderHidden(True)
self.model = QtGui.QStandardItemModel(self.view)
self.view.setModel(self.model)
parent = self.model.invisibleRootItem()
keys = range(65, 91)
for key in sample(keys, 10):
item = StandardItem('Item %s' % chr(key), False)
parent.appendRow(item)
for key in sample(keys, 10):
item.appendRow(StandardItem('Child %s' % chr(key)))
self.view.sortByColumn(0, QtCore.Qt.AscendingOrder)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.view)
class StandardItem(QtGui.QStandardItem):
def __init__(self, text, sortable=True):
QtGui.QStandardItem.__init__(self, text)
self.sortable = sortable
def __lt__(self, other):
if getattr(self.parent(), 'sortable', True):
return QtGui.QStandardItem.__lt__(self, other)
return False
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
1
QTreeViewインスタンスのsetSortingEnabled(bool)
を呼び出します。 Hereは、cのための対応ドキュメンタリーで++とhereはあなたがQSortFilterProxyModelを使用し、そのlessThanメソッドを再実装でき、この機能のためのPyQtはAPIのドキュメンタリーへのリンク
+1
は、私が唯一の子項目のために、すべての項目の並べ替えを無効にする必要はありません。 –
関連する問題
- 1. WInRTアイテムを並べ替えるときのリストビューのアニメーションを無効にする
- 2. RadListBox内のアイテムを並べ替える
- 3. jqGrid:並べ替えを無効にする
- 4. データグリッドビューで並べ替えを無効にできません
- 5. 並べ替えで並べ替え
- 6. jQueryのUIの並べ替えを無効に問題
- 7. hadoopで並べ替えを無効にすることはできますか?
- 8. Riakでデータを並べ替え/並べ替える方法は?
- 9. Laravel 4.2並べ替えの関係による並べ替え
- 10. VBA - ドラッグ&ドロップによる並べ替えの並べ替え
- 11. QObjectの子の並べ替え
- 12. ASPxPivotGridカスタム並べ替え/並べ替えを削除する
- 13. Plone4のフォルダ内のアイテムを並べ替えるには?
- 14. ドラッグ&ドロップでリストボックス内のアイテムを並べ替えるwpf
- 15. MFCでCListCtrlのアイテムを並べ替える方法は?
- 16. テーブルビューのアイテムを動的に追加して並べ替える
- 17. JavaFX 8 TableViewのアイテムの並べ替えを傍受する
- 18. ダイナミックステートメントの構築中にエンティティフレームワークで子コレクションを並べ替える
- 19. 並べ替えメソッドを持つ人物の並べ替え
- 20. Spark DataFrame group降順で並べ替えて並べ替え
- 21. アイテムの並べ替えによるWPF ListViewアニメーション?
- 22. カスタムオーダーで並べ替える
- 23. AlphaFunで並べ替える
- 24. C++は属性別にアイテムを並べ替えます
- 25. Eclipseエクステンションポイントのエクステンションの並べ替え/並べ替え
- 26. C++で別のベクトルと並べ替えてベクトルを並べ替える
- 27. UITableView並べ替えのような並べ替え
- 28. プロジェクトを並べ替える
- 29. LinkedListを並べ替える
- 30. ミュージックプレーヤーを並べ替える
だから、もし项目がソート可能でないならば、__lt__思いやりの上でキーを返すFalse(私の場合はトップレベルの項目ではない)? –
@ Andrewshkovskii。はい。あなたのケースでは、トップレベルの項目に対して通常の 'QStandardItem'を使用し、すべての子項目に対して' __lt__'から 'False'を返すように見えます(' sortable'属性は不要です)。 – ekhumoro
ありがとう、私は試してみる:) –