当 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)
我想使用 QmodelIndex
的 row()
功能。它将直接 return 您当前选择的列表索引。
有一个 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)
我想使用 QmodelIndex
的 row()
功能。它将直接 return 您当前选择的列表索引。