问题标签 [qcompleter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
621 浏览

qt - QLineEdit:自动将反斜杠附加到目录名称

我正在尝试自动为 a 中的有效文件路径添加反斜杠,QLineEdit用于显示 a 的当前路径QFileSystemModel

代码如下所示:

运行代码时得到以下输出:

当我Enter从 lineEdit 中按下键时它可以正常工作,但是如果文本由 设置QCompleter,我仍然会得到相同的调试输出,显示文本已更改,但斜线不会出现在 lineEdit 中。是否以QCompleter某种方式取消了文本?

0 投票
0 回答
351 浏览

python - PyQt4 Completer to a qlineedit

我正在尝试为行编辑小部件制作一个完成者。

这是信号:

这是功能:

当我键入时,程序会显示要完成的内容,然后,python 进程会冻结并崩溃。

我在 64 位的 Windows 7 上运行带有 pyqt4 的 Python 2.7.3,它在我的另一台具有 32 位操作系统的计算机上具有相同的设置,并且工作正常。

0 投票
0 回答
636 浏览

c++ - QTableView + QCompleter 委托返回错误值

我正在使用 Qt (C++),特别是我有一个使用QCompleter. 我对 Qt陌生并且为此苦苦挣扎。

我的问题是,即使QCompleter显示正确的值,它返回的数据始终是第一个元素的数据。

例如,如果我有以下数据(由破折号分隔的字段,数据组成):

我输入D, QCompleter 显示 3 个选项,但无论我选择哪个,都会发生这种情况:

  1. 实际的单元格编辑“正确”(该值反映了所选择的内容)
  2. 回调接收到错误值(总是第一个元素的 ID)

所以在这种情况下,我总是会得到(假设名称是自动完成字段):1-Daniel-197598713-Los Angeles1-Don-197598713-Los Angeles1-David-197598713-Los Angeles

此外,出于某种动机,setEditorData 过程根本不做任何事情(如果我评论它,行为根本不会改变)

这是我的整个委托来源:

0 投票
1 回答
2121 浏览

python - QLineEdit 上的 QCompleter 用于插入的部分文本

我做了一个QLineEdit用于阅读中缀数学表达式。运算符仅限于+-*/和括号。值可以是数字或表示数值的变量名称。我想自动完成变量名。

问题是,显然简单QComplete只适用于单个预定义的单词/短语。它们在其他词之间不起作用(正如您在修改表达式时可能期望的那样)。

我尝试阅读 Tree Model Completer,但由于我使用 Python 编程,这对我来说并没有太大帮助。有人知道用 python 编码的简单树模型完成器示例吗?

0 投票
1 回答
58 浏览

html - QTextEdit 添加缩写系统

我目前正在使用文本编辑器,我想创建一个缩写系统。我的意思是,例如,当您编写 html5 然后按下键选项卡时,您可以展开如下代码:

也许我使用了错误的关键字,但我不知道如何制作这样的函数。我找到了 QCompleter 类,但它似乎比缩写系统更适合完成。

谁能帮我 ?最好的问候, zed13

0 投票
0 回答
345 浏览

qt - 完成具有多个模型/类别的 QLineEdit

我想为 a 构建一个完成,QLineEdit它可以采用多个完成模型并将它们组织为类别。

我有一个基于QSortFilterProxyModel项目的树模型的工作解决方案:

完成

模型中的根项显示为类别,每个根项的子项显示为过滤项。然后是自定义的QTreeView,因此可以正确显示,选项卡忽略类别等。

这很好用——但是它使得编写新的完成变得非常困难(例如,对于设置的可能值)。

每个完成都需要是一个包含所有类别的树模型。我更喜欢为每个类别编写简单的列表模型,然后能够将它们组合成一个QTreeModel,即类似这样的东西(伪 Python 代码):

我想到了一些不同的解决方案,但我不确定要走哪条路,因为所有这些解决方案都觉得实施起来并不简单:

  • 编写一个QAbstractProxyModel类(或自定义模型),将几个列表模型组合成一个树模型,并保持视图部分不变。

然而,用 Python 编写自定义树模型很困难(如果你做错了什么,通常会出现段错误),而且我过去曾遇到过性能问题(与 a 相比QStandardItemModel,因为基础模型中有几千个项目)。

  • 为填充树模型的每个模型编写函数(给定一个类别和一个项目列表)。

这使得编写动态模型而不是仅仅拥有静态项目列表变得更加困难。

  • 使用几个列表模型,并将视图调整QVBoxLayoutQListViews 的 a。

到目前为止,这对我来说是最有希望的。但是,通过完成和过滤实现选项卡以使其正常工作也可能很麻烦,并且也要适当地调整子视图的大小。

有没有我没有考虑过的更简单的方法?哪种方法可能是最不痛苦的?

0 投票
1 回答
361 浏览

c++ - QCompleter 运行时崩溃

我想做一个代码完成器,所以我将 QCompleter 子类化:

http://hastebin.com/qeyumevisa.cpp

但是,当我尝试运行此代码时,出现运行时错误:

运行时错误

调试输出显示:

崩溃似乎来自第 53 行:

我怎样才能修复这个错误?谢谢

0 投票
1 回答
1694 浏览

qt - 大型模型的 QCompleter

QCompleter在大型数据集(大型模型)上工作稍慢:当我开始在其中输入字符时,QCombobox它会经过几秒钟来显示带有变体的自动完成弹出窗口,当输入第二个字符QCompleter在几秒钟内也没有对按键做出反应时。下一个字符工作正常。模型大小约为 100K 记录。QCompleter是否可以在第二个或第三个输入符号后提高性能或显示弹出窗口?有没有一些很好的例子?

0 投票
1 回答
794 浏览

qt - QCompleter 弹出位置

我在尝试移动 QCompleter 弹出视图位置时遇到问题。

我尝试了QCompeter:complete,它会在我想要的位置弹出完成者视图。但是,如果我开始输入它,请关闭它,然后在“默认”位置打开完成程序。

我还尝试了QCompleter:setPopup()函数。我创建了一个 QListView 并尝试移动到不同的位置。QCompleter 弹出视图仍然保持在相同的位置。

在我的项目中,我使用了一个包装 QLineEdit 的 QFrame。我希望完成者视图将获得 QFrame 位置。我通过 setFixedWidth() 函数成功设置了完成者视图宽度。但不要移动位置。

有什么建议么 ?

谢谢。

0 投票
0 回答
229 浏览

python - PySide QT 完成器比前缀方法更灵活

据我所知,QCompleter 只能为以 QLineEdit 中输入的相同字符串开头的字符串提供建议的完成列表。我希望它提出任何包含它作为子字符串的字符串,无论它是在它的开头还是在它的中间......也就是说,对于列表listOfStrings和给定的substring,我希望它建议每个string in [s for s in listOfStrings if substring in s] 而不是实际的 [s for s in listOfStrings if substring == s[:len(substring)]]

我试图继承 QCompleter 类,但没有任何运气......这是我到目前为止所拥有的:

从 PySide 导入 QtCore、QtGui

它部分工作......我很难解决的剩余问题是

  1. 列表项技巧“completionPrefix = self.text() + event.text()”对于获取 QLineEdit 在“super(AutoCompleteEdit, self).keyPressEvent(event )" 调用...它不适用于退格键、箭头键等...
  2. 列表项 使用“self.parent().setText(self.stringlist[index.row()])”调用在activatedWrap() 中设置的QLineEdit 的文本被QCompleter 覆盖(并设置为不正确的值) ...

可以说,整个方法不是很优雅,因为它只是试图修补 QCompleter 的行为,同时让它在后台找到自己的匹配项......但到目前为止我还没有找到更好的方法来解决这个问题!