0

有一个填充有 QStandardItemModel 的 QCompleter(设置为 QLineEdit)。该模型还填充了 QTableView,我需要获取 QModelIndex 并在 QTableView 中选择它,但它失败了,它传递的是文本而不是 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

4

2 回答 2

3

有两个版本的highlighted信号:默认的一个发出一个字符串,另一个发出一个QModelIndex 要获取索引,使用:

completer.highlighted[QtCore.QModelIndex].connect(onHighlight)

但要小心,这是完成模型中的索引,而不是填充完成者的模型。您可以使用mapToSource来获取原始索引。

def onHighLight(index):
    #completer model
    print(index)
    #model 
    sourceIndex=completer.completionModel().mapToSource(index)
    print(sourceIndex)
于 2015-12-14T13:00:19.447 回答
0

我想row()使用QmodelIndex. 它将直接返回您当前选择的列表索引。

于 2017-02-24T21:42:15.897 回答