QAbstractTableModel editable を作成する方法を読んでいますが、かなり簡単に見えます。
しかし、編集可能なセルを設定して QCompleter を使用するにはどうすればよいでしょうか? QTableViewにQLineEditウィジェットを使用するように指示する必要がありますか?これどうやってするの?
編集: うーん、QTableView.setItemDelegateForColumn()で何かがあると思いますが、デリゲートやその使用方法については何も知りません。
編集:RobbieEのソリューションを試してみましたが、そのようなものはありましたが、ポップアップコンボボックスのジオメトリが間違っていて、Enterを押すとPythonがクラッシュしました.
class CompleterDelegate(QtGui.QStyledItemDelegate):
def __init__(self, parent=None, completerSetupFunction=None):
super(CompleterDelegate, self).__init__(parent)
self._completerSetupFunction = completerSetupFunction
def createEditor(self, parent, option, index):
return QtGui.QLineEdit(parent)
def setEditorData(self, editor, index):
super(CompleterDelegate, self).setEditorData(editor, index)
self._completerSetupFunction(editor, index)
私の _completerSetupFunction は次のようになります。
def setupFunc(editor, index):
completer = MyCompleter(editor)
completer.setCompletionColumn(0)
completer.setCompletionRole(QtCore.Qt.DisplayRole)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
editor.setCompleter(completer)
completer.setModel(myAbstractItemModel)