问题标签 [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 回答
456 浏览

python - 如何将 QCompleter 与 InputDialog 一起使用?

我正在编写一个 Python 应用程序,用户可以在其中在 QInputDialog 中输入一个字符串。我如何使用 QCompleter 使输入更容易?

我已经在不同的网站上搜索并阅读了来自 https://doc.qt.io/qt-5/qcompleter.html#details的文档, 但找不到任何有关此问题的帮助。

对我来说,QCompleter 似乎只适用于 QLineEdit 和 QComboBox。(请证明我错了)

如果有人可以向我展示一些如何处理此问题的代码示例,那将对我有很大帮助。

如果不能在 QInputDialog 中使用 QCompleter,你们有解决方法的想法吗?

非常感谢 =)

0 投票
1 回答
136 浏览

c++ - QCompleter 在 NetworkRequest 完成后无法正常工作

与 lineEdit 关联的 Qcompleter 在 QNetworkRequest 完成的插槽中不起作用。Qcompleter 消失得很快。每次 lineEdit 中的文本更改请求时都会发送。我尝试了一个没有其他代码的演示,它也发生了。

每次编辑lineEdit中的文本时,都会将包含文本的请求发送到我的服务器。然后我想在Qcompleter中显示回复内容。但提示立即消失。

0 投票
1 回答
203 浏览

python - QCompleter 和 QAbstractItemModel 如何在 PySide 中工作?

当我将自己的QCompleterQAbstractItemModel一起使用时,我在 PySide 中看到了一种奇怪的行为,而且我在 PySide(或 Qt 中)中找不到解释它在做什么的文档。

当我有一个使用 QCompleter 的编辑框并输入其他字符时,有大量调用来QAbstractItemModel.data()获取大量项目的完成列内容。此调用针对相关的项目发生,每个项目多次,但也针对根目录下的每个顶级项目。

由于我的数据模型中有数百个(甚至可能是数千个)顶级项目,我有点担心我做错了什么。我只是想确保它不会让我的计算机陷入不相关的计算。

我在这里创建了一个示例:https ://gist.github.com/jason-s/6c9495e29a4caac7ddf5cd739550a310 我基于我之前在另一个问题中的示例

如果我运行它python qtcompleter5.py -e 25United States/Arizona/P在编辑框中键入,我在控制台中看到的内容如下所示。(这些Miragi012stan条目是故意的,通过改变参数来轻松改变顶级项目数-e。)

在我看来.data(),所有顶级项目都被调用,然后可能与完成窗口中的文本匹配的实际项目被调用 3-6 次。

唯一不这样做的时候是当我输入顶级项目时,例如Unite产生这些调用:

(顺便说一句,我可以注释掉 TreeView 的东西,只留下 QLineEdit,所以 TreeView 不是导致问题的部分。)

即使我尝试通过告诉 PySide 我正在使用排序模型(参见qtcompleter5a.py)来提供帮助,也会发生相同的行为(查询所有顶级项目)completer.setModelSorting(QtGui.QCompleter.CaseInsensitivelySortedModel)

这里发生了什么?

0 投票
1 回答
104 浏览

python - 从(之一)多列的开始自动完成

我有多列的数据(如“名字”/“姓氏”或“邮政编码”/“地名”),我现在想要(类似于)一个仅从每列的开头匹配的 qcompleter .

这意味着“a”的输入将显示诸如“ A ndrea Miller”或“John A dams”之类的建议,而不是“J a ne Doe”或“Tom M a sters”。

任何提示如何实现这一点?

0 投票
1 回答
113 浏览

python - 最大高度不超过11​​1

我正在尝试在 QlineEdit 中实现 Qcompleter。当我尝试更改 QAbstractItemView 的最大大小时,没有任何反应,它保持在默认的最大大小。

描绘 QCompleter 最大尺寸的图像。

如果我将最大高度设置为低于此尺寸,它会起作用并受到限制。但是,如果我在上面设置一个值,它就不起作用并保持默认大小。

我正在尝试做的测试代码:

0 投票
1 回答
349 浏览

python - 用于 QLineEdit 的 PyQt5 QCompleter 崩溃,没有异常可见

我正在尝试使用 QLineEdit 的 QCompleter 类在键入时提供自动完成建议,并在用户输入新文本后更新建议。但是,当我尝试使用以完成者列表中已经存在的内容开头的文本来更新完成者时,它只会使整个应用程序崩溃,没有可见的异常!甚至 try-except 也没有捕捉到这个错误,我无法理解我做错了什么......

下面是我的代码的一个更简单的示例:它是一个简单的“回显”控制台应用程序,它从 QLineEdit(输入文本框)获取命令并将其写入 QTextBrowser(输出文本框)。当输入全新的“命令”(文本)时,它工作正常,并被添加到完成者中,所以下次我可以看到它。但是,如果新文本的开头与完成列表中的其他词相似,则选择它会使整个 GUI 应用程序崩溃,没有可见的异常,即使我在调试模式下运行也不...

请看下面我的例子,并尝试在上面的文本框选项写:a,aa,aaa(开始类似于完成词:aaa1)

我究竟做错了什么??

0 投票
1 回答
519 浏览

python - PyQt5 QCompleter如何在选择自动完成文本后清除QLineEdit

使用 QCompleter 选择自动完成文本后,如何清除文本框 (QLineEdit)?- 没有什么对我有用。

下面是我的代码的一个更简单的示例:它是一个简单的“回显”控制台应用程序,它从 QLineEdit(输入文本框)获取文本命令并将其写入 QTextBrowser(输出文本框)。一旦用户在输入文本框上按下 ENTER,该文本应该被添加到输出文本框中,并且输入文本框应该被清除(为下一个命令做好准备)。

输入不在自动完成选项中的新文本时,一切正常:文本被添加到输出文本框中并从输入文本框中清除。但是,当用户从自动完成选项中选择一个选项(使用向下/向上箭头)然后按 ENTER 时,文本将添加到输出文本框中,但不会从输入文本框中删除...

这两种情况都调用我的回调函数(触发函数),它应该清除输入文本框,使用:

但是当通过ENTER选择自动完成文本时,输入文本框不会被清除......文本被正确添加到输出文本框中,所以我的回调函数被正确调用。在我清除它之后,完成器似乎正在填充我的文本框......如何禁用此行为并确保输入文本框被清除?我可以删除它吗?

下面是整个例子。您可以尝试通过键入“zzz”或任何其他不在自动完成列表中的文本并按 ENTER,然后尝试键入“a”,然后使用键盘向下输入“aaa1”(或自动完成中的任何其他文本)选项)并按 ENTER。在这种情况下,您会看到输入文本框没有被清除。

0 投票
1 回答
1123 浏览

python - PyQt5 将 QCompleter 添加到现有的 QTextEdit

我目前正在使用 PyQt5 创建 SQL 编辑器和查询向导,并且在尝试将 QCompleter 添加到向导中的所有 QPlainTextEdits 时遇到问题。所有的 UI 都是用 Qt Designer 创建的,并存储在 QStackedWidget 中。

我已阅读将 Designer 中的小部件提升到我的自定义小部件 (TextEdit),这是一个带有 QCompleter 模型接口的 QTextEdit。

我的问题是,如何将完成模型设置为已经创建的对象?有没有办法在完成者设置之后才初始化它?在程序的另一部分,由于功能的原因,我可以在设置后添加小部件,但必须有更好的方法。

任何帮助将不胜感激。下面是我用来设置工作方式的代码。

编辑:

这是最小示例的基类...

这是我的用户界面代码:

谢谢!

第二次编辑:

来自 ui 的静态 QPlainText

0 投票
0 回答
43 浏览

c++ - 在没有小部件的情况下以编程方式使用 QCompleter

我很难在没有小部件的情况下以编程方式使用QCompleter。我希望这会显示我根目录中的所有/目录:

返回一个空字符串,currentCompletion()我看到的是模型索引似乎无效。

注意:如果我运行相同的代码并将完成程序附加到例如QLineEdit(使用myLineEdit->setCompleter(completer);),则完成工作按预期工作。

0 投票
1 回答
590 浏览

python - 如何在 PyQt5 LineEdit 小部件中刷新自动完成建议列表

我正在使用 QCompleter 使用lineEdit1自动完成列表填充 QLineEdit 小部件autocomplete_list。小部件成功填充了自动完成列表中的数据。

但是,当我将以下任何文本输入lineEdit1

然后按回车键,我收到以下错误消息:

Process finished with exit code -1073741819 (0xC0000005)

这里发生了什么?当我在小部件中输入“b”时,程序不会崩溃。当我在小部件中输入“1”时也很好。为什么当我输入“a”或 5 个项目中的任何一个时它会崩溃autocomplete_list