gpt4 book ai didi

Qt QCompleter 多重匹配

转载 作者:行者123 更新时间:2023-12-04 13:28:13 25 4
gpt4 key购买 nike

我试图让 QCompleter 匹配几个用逗号分隔的等效选项。似乎没有简单的方法可以做到这一点,但有一行 QCompleter 引用引起了我的注意,它描述了函数 QCompleter::splitPath:“当与列表模型一起使用时,返回列表中的第一项用于匹配。”这可以按我需要的方式使用 - 拆分输入字符串并返回它,以便未完成的最后一项是列表中的第一个?我没能成功,但我可能做错了什么。

最佳答案

这是我认为更符合原始问题的另一种方法。不需要复杂的数据模型,而是使用简单的 QStringListModel。

import sys
from PyQt4 import QtCore, QtGui

class test(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

model = QtGui.QStringListModel()
wordList = ['John Doe','Jane Doe','Albert Einstein', 'Alfred E Newman']
model.setStringList(wordList)

layout = QtGui.QVBoxLayout(self)
self.line = QtGui.QLineEdit(self)
layout.addWidget(self.line)

complete = CustomCompleter(self)
complete.setModel(model)
complete.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
complete.setCompletionMode(0)
complete.setWrapAround(False)

self.line.setCompleter(complete)


class CustomCompleter(QtGui.QCompleter):
def __init__(self, parent=None):
QtGui.QCompleter.__init__(self, parent)

def pathFromIndex(self, index):
path = QtGui.QCompleter.pathFromIndex(self, index)

lst = str(self.widget().text()).split(',')
if len(lst) > 1:
path = '%s, %s' % (','.join(lst[:-1]), path)

return path

def splitPath(self, path):
path = str(path.split(',')[-1]).lstrip(' ')
return [path]

#===============================================================================
# Unit Testing
#===============================================================================
if __name__ == '__main__':

app = QtGui.QApplication(sys.argv)
window = test()
window.show()
sys.exit(app.exec_())

关于Qt QCompleter 多重匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3779720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com