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. 並べ替えを無効にする
- 2. jQuery tablesorter子要素th並べ替えを無効にする
- 3. 並べ替えオプションが無効です
- 4. FirebaseデータベースのアイテムをReactネイティブリストビューで並べ替え/並べ替え
- 5. WInRTアイテムを並べ替えるときのリストビューのアニメーションを無効にする
- 6. Crystal ReportのCrossTabで並べ替えを無効にする
- 7. GridViewでEditItemTemplateの並べ替えを無効にする
- 8. JQuery UIで並べ替えを無効にする方法は?
- 9. JavaFX:TableView列の既定の並べ替えを無効にする
- 10. QTableView一部の列の並べ替えを無効にする
- 11. bootstrap-table:行の並べ替えを無効にする
- 12. angularjsデータテーブルの並べ替えを無効にする
- 13. RadListBox内のアイテムを並べ替える
- 14. plot_ly並べ替える行列を無効にする
- 15. jqGrid:並べ替えを無効にする
- 16. データグリッドビューで並べ替えを無効にできません
- 17. sap.ui.commons.Accordionの並べ替えを無効にします
- 18. StaggeredGridLayoutManagerはアイテムを並べ替えます
- 19. 並べ替えで並べ替え
- 20. jQueryのUIの並べ替えを無効に問題
- 21. フラットリスト内のアイテムの並べ替え
- 22. RecyclerViewのアイテムの並べ替え
- 23. すべての列の並べ替えを無効にする - dataTables
- 24. Delphi 7 | FileListBoxアイテムの並べ替え
- 25. MarkLogic node.js api - グループを並べ替え、並べ替えで並べ替え
- 26. 選択並べ替え並べ替え
- 27. ブートストラップ:ブートストラップグリッドビューで1列のみの並べ替えを無効にする方法
- 28. JavaScript並べ替えアイテム数月ごと
- 29. hadoopで並べ替えを無効にすることはできますか?
- 30. ヘッダーのクリックを無効にする方法ag-gridで並べ替え
だから、もし项目がソート可能でないならば、__lt__思いやりの上でキーを返すFalse(私の場合はトップレベルの項目ではない)? –
@ Andrewshkovskii。はい。あなたのケースでは、トップレベルの項目に対して通常の 'QStandardItem'を使用し、すべての子項目に対して' __lt__'から 'False'を返すように見えます(' sortable'属性は不要です)。 – ekhumoro
ありがとう、私は試してみる:) –