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

时间:2015-12-12 08:45:19

标签: qt pyqt qcompleter qmodelindex

有一个用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

2 个答案:

答案 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}}函数。它将直接返回当前选择的列表索引。