- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 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/
我有一个 QLineEdit,它有一个 QCompleter 对象。如果用户至少输入了一个字符,则会显示 QCompleter 的弹出菜单,但是当用户删除最后一个字符(从而使该字段留空)时,弹出菜单就
我正在使用 Qt4.6,并且我有一个带有 QCompleter 的 QComboBox。 通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联 - 这是我的用法)。例如,给定 chic
我试图让 QCompleter 匹配几个用逗号分隔的等效选项。似乎没有简单的方法可以做到这一点,但有一行 QCompleter 引用引起了我的注意,它描述了函数 QCompleter::splitPa
我有表窗口小部件,其中一列需要具有文本自动填充功能。 每次用户请求新行时,我都会为该列运行以下代码: else if (i == COLUMN_DESCRIPICION){ Q
QCompleter 在大型数据集(大型模型)上运行速度稍慢:当我开始在 QCombobox 中输入字符时,它会花费几秒钟的时间来显示带有变体的自动完成弹出窗口,当输入第二个字符时,QComplete
我使用的是 Qt4.6,并且我有一个 QComboBox,里面有一个 QCompleter。 通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联中 - 这是我的用法)。例如,给定 c
它没有显示任何弹出窗口或错误。它静静地什么都不做。 QStringList dictionary; dictionary inRawText); completer->setModel(new QSt
我对 Qt 很陌生。我试图在这里找到答案,但到目前为止没有成功。我在 main.cpp 文件中有一个复杂结构的 vector ,我想将它用作我在 mainwindow.cpp 的 void 函数中定义
我想做一个代码完成器,所以我将 QCompleter 子类化: http://hastebin.com/qeyumevisa.cpp 但是,当我尝试运行这段代码时,出现运行时错误: 调试输出显示: A
需要一些帮助。我有一个 QCompleter 和一些 QStringList,例如: QstringList list; list #include #include #include #in
我正在使用 Qt4.6,并且我有一个带有 QCompleter 的 QComboBox。 通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联 - 这是我的用法)。例如,给定 chic
我有一个表,其中包含一些使用非常大的数字作为主键的键控记录。我有类似于下面的代码,它使用 QCompleter 自动完成此表中的查找。它有效,但显示的补全是使用科学记数法 (1234567 => 1.
有人问过关于覆盖 QCompleter 弹出位置的类似问题,但我仍然找不到有效的解决方案。我只是想将弹出窗口向下移动 5px 左右(我有一些特定的样式要求) 我尝试将 QListView 子类化并使用
我刚刚开始使用 PyQt5,这里有一个小文件: class Window(QWidget): def __init__(self): QWidget.__init__(self
我创建了一个自定义 QCompleter 类,它在弹出窗口中显示所有项目,其中包含 QLineEdit 的键入词。 现在所有项目都按字母顺序排列,如您在此处所见: 如果我输入“dab”然后按字母顺序输
我正在对 QCompleter 进行子类化,以赋予它一些特殊功能。我希望在模型中只有一个具有给定前缀的完成时触发 activated(),但这不是我遇到问题的地方。 我在我的子类中创建了一个虚拟 se
我已经用 QStringList 初始化了 QCompleter。而这个字符串列表有超过 30,000 个条目。我已在我的用户界面中连接到 Qlineedit。那里没有问题。问题在于,每当我在该 ql
在网上搜索了很多都没有找到正确的答案之后,我向你们寻求帮助...所以让我们看看我是否可以解释一下。 我正在使用 Qt 5 开发 UI,我想要一个具有自动完成功能的 lineEdit。我知道我可以使用
我都是,我只是效仿这个很好的例子: http://qt-project.org/doc/qt-4.8/tools-customcompleter.html 除了使用 modelFromFile 方法进
我想研究如何制作一个小的用户界面,用户可以在其中键入一些字母并根据给定的数据源(此处列出)获得一些建议,从而使搜索更容易。为此,我使用 Qt 的 QCompleter类。 在匹配元素中,键入的字母应使
我是一名优秀的程序员,十分优秀!