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

qt - 为什么在 QPlainTextEdit 中移动光标滚动时不调用 scrollContentsBy(dx, dy) 函数

我已经派生了 QPlaintTextEdit 并覆盖了 scrollContentsBy 函数。只有当我们使用鼠标滚轮或滚动条时才会调用它。当我们使用箭头键移动光标并滚动内容时,不会调用此函数。

我为 QTextEdit 做了同样的事情,它工作正常(意味着它在所有情况下都会被调用)。

这种行为的原因是什么?我可以使用什么替代方案?

注意:这是函数原型

环境:

  • Windows 7的
  • Qt 4.8
  • 对比 2008

更新:以下替代方案均无效,

  • 价值改变
  • 滑块已移动
0 投票
1 回答
676 浏览

qt - 如何使用 QPlaintTextEdit 高效地创建固定宽度的列记录器?

我想使用 QPlainTextEdit 在 Qt (4.8) 中创建一个日志窗口。这意味着我将使用appendPlainText. 该日志需要显示需要具有固定宽度的数据列,与显示的数据无关(它们将具有数据的最大大小)。IOW 我希望他们能够展示这样的东西:

正如您在上面的示例中所看到的,每列都有固定的宽度,例如,如果某些数据小于可用空间,则下一个数据将从相应列的确切起点开始(而不是紧随其后)。我需要知道如何在 Qt 中以一种有效的方式做到这一点。

在网上做了一些研究后,我发现我采取的一些方法是不合适的。第一个是使用 QString::args():

上面的代码有一些不足:首先它的默认显示配置是集中数据,除非在告诉列大小的地方设置了“-”。(文件正式告诉正数给出了一个右对齐的值,但我的测试显示不是这样 - 见下文)不过,这是错误且有限的:我无法做到右对齐,如果我告诉首先arg具有左对齐的文本,然后所有其他后续args也显示左对齐的文本,即使它们的列宽编号是正数。此外,它仅在字体样式为 Monospace 时才真正起作用。

我发现的另一种方法是使用 QTextStream:

或者

但这似乎“过于复杂”;我期待一个更像args.

难道没有别的办法了吗?

这是我对args代码的测试:

第一个代码的测试结果

参考:链接1链接2

0 投票
1 回答
3152 浏览

qt - QPlainTextEdit 双击事件

我需要在 QDockWidget 内的 QPlainTextEdit 上捕获双击事件。

在我的实际代码中,我在 QDockWidget 中安装了一个事件过滤器来处理调整大小操作,并在 QPlainTextEdit 中安装了一个事件过滤器来处理双击事件:

但是,虽然它适用于 QDockWidget,但我无法捕捉到 QPlainTextEdit 的双击事件:

使用此代码,永远不会显示“双击”消息。知道代码有什么问题吗?

0 投票
1 回答
1449 浏览

python - QPlainTextEdit 认为如果它有一个空文本它被修改

我正在使用 PyQt 构建一个简单的 IDE,如果您加载一个空文件,则会出现奇怪的错误。下面发布了一个小示例脚本:

正如预期的那样,这显示了一个带有纯文本编辑器的窗口。一旦setPlainText调用该方法,编辑器就会发出两个事件:一个modificationChanged带有 的事件changes=True,一个带有 的事件changes=False。有点奇怪,但很好。但是,如果您更改setPlainText('a')setPlainText(''),则只会发出一个事件,这次使用changes=True. 更糟糕的是,在告诉编辑它没有用 修改后setModified(False),它坚持认为它已经以某种方式进行了更改。

有谁知道是什么原因造成的以及我如何解决这个问题?


更新:这似乎是一个错误,也会影响QPlainTextEdit.clear().

下面的解决方法在QPlainTextEditto fixclear()setPlainText('').

0 投票
1 回答
3536 浏览

c++ - 如何在 QPlainTextEdit 中使一行只读?

我想在子类 QPlainTextEdit 中将特定行设为只读。

我知道我可以覆盖 keyPressed 事件并将其忽略为只读,但我需要过滤非编辑键(例如箭头导航键)的键事件。此外,这不会解释粘贴在该行上的文本。

是否有对此的内置支持或更好的方法?

0 投票
3 回答
1880 浏览

qt - QTextEdit 或 QTextBrowser 性能问题

我有一个沉重的QString.

我需要将其显示为输出。

我尝试了两者QTextEditQTextBrowser。以及所有设置文本的方法,如,,setText......性能真的很差。最烦人的是在用户界面上设置东西意味着阻塞主线程。因此程序将在此过程中变得无响应。appendsetPlainText

有没有更好的方法来显示视觉文本结果?

0 投票
1 回答
105 浏览

qt4 - QTextEdid(或 QPlainTextEdit)中字符的垂直对齐方式

我正在尝试在 QTextEdit/QPlainTextEdit 中编写以下漂亮的表格:

但是当我这样做时,appendPlainText(QString)我不会让字符垂直对齐。似乎每个字符都有不同的宽度,所以结果几乎是一团糟,文本有点左对齐。

0 投票
0 回答
1815 浏览

c++ - 如何禁用 QPlainTextEdit 中文本块的编辑?

我正在制作一个基于 QPlainTextEdit 的组件。我想将部分文本设为只读(但仍允许选择、导航和剪贴板等)。

我可以检测到按键事件并抑制它,但我需要一个条件来执行此操作。有没有办法阻止编辑而不必检查不同的键、组合等(在每个平台上可能不同)?

0 投票
1 回答
1903 浏览

c++ - QPlainTextEdit - 将文档搜索到末尾并从头开始搜索

我想在 QPlainTextEdit 中搜索从当前光标到结尾的字符串。如果什么也没找到,我想从头开始继续搜索。只有在这个阶段,如果什么都没找到,就会出现一条消息。这是代码:

问题是线setTextCursor(cursor);

  • 没有这一行,搜索不会从头/尾继续
  • 有了这一行,一切都很好,除了找不到字符串时,光标位于文档的开头/结尾,并且用户在文档中的当前位置丢失了。

如何在文档中搜索字符串并且如果没有找到则不更改当前位置?


更新

感谢 IAmInPLS,代码如下所示。我为verticalScrollBar 添加了保值。即便如此,当没有发现任何内容时会出现短暂的闪烁:cursor.movePosition(reverse?QTextCursor::End:QTextCursor::Start);

我们怎样才能摆脱它?怎么可能看起来像专业编辑?创建另一个不可见的 QPlainTextEdit 元素以在其中搜索是一个想法吗?

0 投票
2 回答
634 浏览

c++ - Qt 设置 QPlainTextEdit 的滚动区域以匹配其他滚动区域。

我一辈子都不知道该怎么做。

我有两个 QPlainTextEdits,自动换行。
我使用 Now myTextEdit 填充myTextEdit->document()->setPlainText(myText);
了一个水平滚动条。现在我希望我的其他 textEdit 能够滚动与 myTextEdit 完全相同的数量,尽管其中有多少单词。如何设置其他文本编辑的滚动区域内的宽度以匹配 myTextEdit 的宽度?

我希望文档宽度相同,但 myTextEdit->document()->size() 没有用。任何人都可以帮忙吗?