- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Qt4.6,并且我有一个带有 QCompleter 的 QComboBox。
通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联 - 这是我的用法)。例如,给定
chicken soup
chilli peppers
grilled chicken
输入 ch
将匹配 chicken soup
和 chilli peppers
但不是 grilled chicken
。
我想要的是能够输入 ch
并匹配所有这些,或者更具体地说,chicken
并匹配 chicken soup
和烤鸡
。
我还希望能够将 chs
之类的标签分配给 chicken soup
以生成另一个匹配项,而不仅仅是文本内容。我可以处理算法,但是,
我需要覆盖 QCompleter 的哪些功能?
我不太确定我应该看哪里...
最佳答案
根据@j3frea 的建议,这是一个工作示例(使用 PySide
)。似乎每次调用 splitPath
时都需要设置模型(在 setModel
中设置一次代理不起作用)。
combobox.setEditable(True)
combobox.setInsertPolicy(QComboBox.NoInsert)
class CustomQCompleter(QCompleter):
def __init__(self, parent=None):
super(CustomQCompleter, self).__init__(parent)
self.local_completion_prefix = ""
self.source_model = None
def setModel(self, model):
self.source_model = model
super(CustomQCompleter, self).setModel(self.source_model)
def updateModel(self):
local_completion_prefix = self.local_completion_prefix
class InnerProxyModel(QSortFilterProxyModel):
def filterAcceptsRow(self, sourceRow, sourceParent):
index0 = self.sourceModel().index(sourceRow, 0, sourceParent)
return local_completion_prefix.lower() in self.sourceModel().data(index0).lower()
proxy_model = InnerProxyModel()
proxy_model.setSourceModel(self.source_model)
super(CustomQCompleter, self).setModel(proxy_model)
def splitPath(self, path):
self.local_completion_prefix = path
self.updateModel()
return ""
completer = CustomQCompleter(combobox)
completer.setCompletionMode(QCompleter.PopupCompletion)
completer.setModel(combobox.model())
combobox.setCompleter(completer)
关于qt - QCompleter 自定义完成规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808597/
我有一个 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类。 在匹配元素中,键入的字母应使
我是一名优秀的程序员,十分优秀!