当 QCompleter 突出显示时传递 QModelIndex 而不是 QString

Pass QModelIndex instead of QString when QCompleter highlighted

有一个 QCompleter(设置为 QLineEdit)填充了 QStandardItemModel。该模型还填充了 QTableView,我需要在 QTableView 中获取 QModelIndex 和 select 但它失败了,它 传递文本而不是 QModelIndex:

completer.highlighted.connect(print_index) 

只传递第一个索引:

completer.highlighted.connect(lambda : select_index(completer.currentIndex()))

def select_index(index):

    table_view.setCurrentIndex(index)

我阅读了文档,但无法理解我做错了什么。 http://doc.qt.io/qt-5/qcompleter.html#highlighted-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)

我想使用 QmodelIndexrow() 功能。它将直接 return 您当前选择的列表索引。