有一个用QStandardItemModel填充的QCompleter(设置为QLineEdit)。该模型还填充了QTableView,我需要获取QModelIndex并在QTableView中选择它但它失败了,它 传递文本而不是QModelIndex:
completer.highlighted.connect(lambda : select_index(completer.currentIndex()))
def select_index(index):
table_view.setCurrentIndex(index)
仅传递第一个索引:
{{1}}
我读了文档,但无法理解我做错了什么。 http://doc.qt.io/qt-5/qcompleter.html#highlighted-1
答案 0 :(得分:1)
highlighted
signal的两个版本:默认发布一个字符串,另一个发出QModelIndex
要获取索引,请使用:
completer.highlighted[QtCore.QModelIndex].connect(onHighlight)
但要小心,这是completion model中的索引,而不是填充完成者的模型。您可以使用mapToSource
获取原始索引。
def onHighLight(index):
#completer model
print(index)
#model
sourceIndex=completer.completionModel().mapToSource(index)
print(sourceIndex)
答案 1 :(得分:0)
我想使用row()
的{{1}}函数。它将直接返回当前选择的列表索引。