问题标签 [qplaintextedit]

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 投票
0 回答
989 浏览

python - 从 QPlainTextEdit 读取大量文本

我正在尝试将 QPlaintextedit 小部件用作文本编辑器,到目前为止效果很好,使用它我可以输入大量文本,并且 UI 不会冻结或卡顿。我想我会突破界限,看看会发生什么。

基本要点是使用我的编辑器我可以编写伪代码,然后解析代码以查找错误。如果没有错误,解析会根据输入文本吐出一些 xml。最后,我得到了一个很好的描述文本的 xml 文档。本质上,我已经设法将伪代码转换为 xml 文件。

这工作得相当好,但编辑器中的文本越多,它使用的内存就越多。现在我设法将大约 750k 行文本粘贴到我的编辑器中,当需要解析它时,我首先读取文本,然后将整个文本发送到解析器。为此,我这样做:

这为我提供了编辑器中的所有文本,我可以将其发送到解析器,然后将其转换为 xml 文件(如果没有发现错误)

现在编辑器中有 750k 行文本,toPlainText()方法不能很好地工作,实际上我只是内存不足。

我的问题是我应该如何处理大量文本才能解析它。

我考虑过(未尝试过)的一件事是逐块(或逐行)读取文本,解析每一行并将其转换为 xml,但我仍然必须处理返回的 xml,将生成的 xml 保留为在解析整个编辑器文本之前,内存中的每一行/块仍然可能会耗尽内存

我无法想象这仅与 QPlainTextEdit 小部件有关,但通常当在单个文件中有大量“代码”/文本说 1M 甚至 10M 行“代码”时,如何阅读并解析所有 10M 行?

对于我的示例,我在 Windows 上使用 python 2.7 和 pyqt4.8

0 投票
1 回答
536 浏览

qt - 我可以延迟/捆绑对 QPlainTextEditor.textChanged 事件的反应吗?

我有一个用于我编写的建模语言的小型 IDE,在 PyQt/PySide 中实现,并且正在尝试实现一个代码导航器,让您可以跳转到正在编辑的文件中的不同部分。

当前的实现是:(1)连接到 QPlainTextEditor.textChanged,(2)任何时候进行更改,(草率地)解析文件并更新导航器窗格

它似乎工作正常,但我担心这可能会导致较慢系统上的大文件出现重大性能问题,特别是如果将来有更多内容连接到 textChanged。

我的问题:这里有没有人实现了对事件的延迟反应,以便在短时间内多个事件(即击键)只触发一次更新(比如每秒一次)?有没有合适的 QT 方式来做到这一点?

谢谢,迈克尔

0 投票
2 回答
926 浏览

c++ - 如何在 QPlainTextEdit 中覆盖撤消/重做

我是 QPlainText 编辑的子类,我希望能够拦截撤消/重做命令,以便我可以实现自定义功能。

我意识到我可以使用 setUndoRedoEnabled 禁用撤消/重做功能,并且可以检测到 Ctrl+Z 和 Ctrl+Y 按键。但是,这似乎不是最好的跨平台方式。

有什么建议吗?

0 投票
1 回答
96 浏览

python - Python:从 Qt Designer 创建的 QPlainTextWidget 获取击键

我需要从 Qt Designer 创建的表单中读取键入到 QPlainTextWidget 中的击键。

我知道我可以用 阅读整个结果文本QPlainTextWidget.toPlainText(),但我需要在输入字母时单独阅读它们。(我正在为摄影师编写一个文件重命名程序,并希望向用户显示他们在文本框中输入的新文件名。我使用他们的条目作为文件名的基本名称。)

我尝试使用 将子例程连接到文本框self.txtFilename.keyPressDown.connect(self.DiplayNewFilename),但这会产生错误,因为 keyPressDown 不是插槽。

我在网上读到子类化可以创建一个解决方案,但我不知道该怎么做,或者将子类化代码放在我的整体代码中的什么位置。我的程序是一个单一表单应用程序,它使用我在 Qt Designer 中创建的 GUI 表单。我想创建一个灵活的解决方案,让我可以在我的主要 Python 文件中添加编码解决方案,而不是编辑 Qt Designer 生成的 GUI 代码。

我当前的代码只有一个类(用于主窗口)。我会将新的子类化代码放在哪里——在这个现有的类中,还是作为一个新类?我该怎么称呼它?

我正在运行 Ubuntu 16.04、Python 3 和 Qt 4。photoOrg_MainWindow.Ui_MainWindow下面的代码是由 Qt Designer 创建的表单。txtFilename是我要捕获其击键的文本小部件。

干杯,非常感谢您的智慧!

TL/DR:有没有办法从 Qt Designer 中创建的文本小部件访问文本框击键?

到目前为止,这是我的代码的精髓:

0 投票
1 回答
517 浏览

python - PyQt QPlainTextEdit: How to replace right-click with key combination

How do I substitute "right-click" in the following snippet with a key combo (for example Ctrl-S)? I searched google and Qt manuals but still have no idea how to do it. I am new to Qt. Any help will be greatly appreciated.

(P.S. to @ekhumoro: I can't seem to @you in your answer to the "PyQt: How to insert text at the cursor in QTableView" question. I used your idea here. But I'd like to use key combination or a button.)

0 投票
2 回答
447 浏览

c++ - QPlainTextEdit - setViewportMargins,受保护

我有一个简单的文本编辑应用程序 - QPlainTextEdit,由 qt 设计师创建。我只需要从 mainwindow.cpp setViewportMargins。但我收到以下错误消息 - void QAbstractScrollArea::setViewportMargins(int, int, int, int)' 受到保护。

代码:

有没有办法做到这一点?

0 投票
2 回答
1672 浏览

c++ - 如何在 QPlainTextEdit 中为突出显示的字符串创建工具提示

我有一个 QPlainTextEdit 并在其中突出显示了一些单词现在我想要当我用鼠标将鼠标悬停在它上面时它会向我显示一个工具提示,其中包含关于这个突出显示的单词的描述或类似的东西在 QT IDE 中类似这样

在此处输入图像描述

但我不知道如何开始,所以有任何想法、代码或类似项目来检查这个。

0 投票
0 回答
49 浏览

qt - QPlainTextEdit: à è é ì ò 应该在它们被输入时变成“a' e' i'...”

我正在使用 QtCreator 编写一个简单的文本编辑器,但我需要像“à è é ì ò”这样的字母在输入时会变成“a' e' e' i' o'”......有办法吗?

0 投票
2 回答
3202 浏览

c++ - 在 QPlainTextEdit 的上下文菜单中添加事件

context_menu_now

这是我右键单击QPlainTextEdit后的上下文菜单。我想在Context Menu中添加从文件加载数据的功能。我可以吗?如何?

0 投票
1 回答
958 浏览

python - 增加 QTextEdit 中的下边距

即使行数小于 QTextEdit 的高度,我也需要启用滚动条,如下图所示

我试过setDocumentMargin()了,但它在各个方向(左、右、上和下)都有边距

那么,有没有办法只增加 QTextEdit 的底部边距。

具有较大边距的编辑区域