问题标签 [qtextdocument]

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 回答
168 浏览

qt - 如何将 QTextFrame/QTextBlock 保持在一页上?

有没有办法将 a QTextFrameor的内容保持QTextBlock在同一页面上?

如果当前页面上的内容仍有足够的空间,我不想插入分页符,但如果没有,所有内容应该一起移动到下一页。

我知道有PageBreak_Auto/ PageBreak_AlwaysBefore/ PageBreak_AlwaysAfter,但据我所知,PageBreak_Auto确实会在页面之间拆分内容,而另外两个总是在段之前/之后插入分页符,无论当前页面上是否有足够的空间。

0 投票
1 回答
428 浏览

qt - Qt - 如何计算和测量 QTextDocument 中的行数?

在我的一个项目中,我创建了一个 QTextDocument,它拥有我需要绘制的文本。该文本是一个自动换行的 HTML 格式文本,它应该绘制在一个矩形区域中,我知道该区域的宽度。它的内容也永远不会超过一个段落。

文本文档创建如下:

这是我要绘制的示例文本:

这些图像是从 qml 资源中获取的 SVG 图像。

为了在绘制文本时执行多项操作,我需要知道在应用自动换行后将绘制多少行,以及自动换行文本中任何行的高度。

我尝试在文本文档提供的功能中进行搜索,以及在 QTextBLock、QTextFragment 和 QTextCursor 中提供的功能。我尝试了几种方法,例如用光标遍历字符并计算行数,或计算块中的每个片段。不幸的是,它们都没有奏效:所有功能总是算1行,或者只是失败。

这是我已经尝试过的一些代码示例,但没有成功:

我无法弄清楚我做错了什么,以及为什么我所有的方法都失败了。

所以我的问题是:

  1. 如何计算我的word 包装文档中包含的行数
  2. 如何测量我的word 包装文档中的行高
  3. 文本文档功能是否因为 html 格式而失败?如果是,在这种情况下我应该如何实现我的目标?

注意我知道如何测量整个文本的高度。但是,由于每个行高可能不同,我不能只将整个文本高度除以行,所以这对我来说不是一个可接受的解决方案。

0 投票
1 回答
205 浏览

python - 更改 QTextEdit 中的搜索路径

我已阅读有关 QTextBrowser 的信息,您可以在其中添加 SearchPaths。有没有办法在 QTextEdit 中实现相同的功能?

背景:

我想在 QTextEdit 中加载一个 HTML 文件。使用 .setHtml 它加载文本,但不加载图像。任何浏览器都能正确加载所有内容。示例 html:

我发现,Python/Qt 找不到图像,因为它需要完整路径。但是,我不想将完整路径保存在我的 html 文件中。(因为稍后我可能会更改位置)。

如果我使用 os.chdir() 更改工作目录,它会加载图像,但如果我将其更改回来,图像不会再次显示。而且这个解决方案似乎很棘手。

0 投票
1 回答
94 浏览

qt - 我可以在 Qt 的 QTextDocument 中使用自定义标签吗?

我知道 Qt QTextDocument和 Qt QML Text 类型支持一组支持的标签支持的 CSS 属性,形成 HTML 4 的子集。

但是有什么方法可以扩展我可以使用的标签吗?例如,当我想呈现自定义 XML 而不首先将其转换为 HTML 时(通过Qt 的 XSL-T或其他方式)。或者类似地,当我想直观地实现 Qt 的 HTML 4 子集尚不支持的元素时。

0 投票
1 回答
181 浏览

python-3.x - 如何正确设置打印机的painter?

我正在打印一组表格,每个表格都应该有自己的页面并且可能很长。基础工作正常,但我没有画出页脚。问题是页脚将被绘制在额外的文档中。

根据文档,我必须将画家设置为设备。该设备是画家,这是正确的,但我如何将画家设置为正确的块?还是这样做是不对的?

目标是使用此文档两次。第一次尝试是打印,第二次是QTextDocument我可以在其中找到QTextTable's 并与另一个文档元素一起编译它。

工作示例

0 投票
1 回答
190 浏览

c++ - Qt - 如果在 html 中指定字体,QTextDocument 会中断自动换行

我必须使用 QTextDocument 将 HTML 转换为 pdf,但是,如果我在 html 中指定字体(这就是我需要的),则自动换行结果会损坏。

要编译此代码,请在 .pro 中添加 QT += printsupport

例子:

在这种情况下,样式会破坏自动换行。

示例 2:

在这种情况下,它可以完美运行。

我是否遗漏了什么或者样式规范无法用于自动换行?

谢谢你。

0 投票
1 回答
120 浏览

python - 为什么格式会在单独的 QTextDocuments 之间延续,我该如何防止它?

我目前正在使用 QTextEdit 开发 WYSIWYG 文本编辑器。每次加载新文件时,我都会重置并重新格式化 QTextDocument,读取文件(空白),然后将.setHtml()其内容发送到编辑器。我打算让每个新创建的文件始终在单个函数中定义相同的默认样式。

相反,输入到空文件中的新文本正在接收来自先前加载的 QTextDocument 的格式,而不是默认为我提供的格式。如果我将语法突出显示的代码复制粘贴到一个文档中,然后创建并键入一个新文档,这是最明显的。字体、字体颜色和背景颜色都将延续到新文档中,尽管它不存在于其 html 结构中。


这是在将任何文件加载到 QTextEdit 之前我当前正在运行的函数:

我曾假设当存储格式的文档被替换时,任何旧格式都会丢失。为什么不是这种情况?如何确保只应用我的默认样式?

0 投票
2 回答
490 浏览

python - 如何在 PyQt5 中“打印预览”由 QTextDocument 创建的文档?

专家您好!!我希望你今天过得愉快。我是 GUI 编程的新手,特别是 PyQt5。我正在练习简单的 GUI 发票应用程序。在这个应用程序中,我成功地生成了 Invoice By QTextDocument。现在我想添加打印对话框和打印预览选项。我在代码中遇到问题。这是在说

AttributeError:“InvoiceForm”对象没有属性“printpreviewDialog”

因为我是新人,所以我在那里有点困惑。你能修复代码吗?这对我学习有很大帮助。非常感谢。代码如下: -

0 投票
1 回答
264 浏览

python - 如何更改 QTextDocument 中图像的字体和大小?

我想打印一些由 qtdesigner 设计的文本和图像。

如何更改字体和另一种格式QTextDocument

0 投票
2 回答
124 浏览

qtextdocument - 如何从 QTextDocument 中删除所有文本颜色属性?

QTextDocument从 HTML 文件中读取;给定一个QString名为的 HTML 数据topicFileData,我愿意topicFileTextDocument.setHtml(topicFileData);。然后我想去掉所有的颜色信息,使整个文档只使用默认的前景和背景画笔。(我不想明确地将文本设置为白色背景上的黑色文本;我想从文档中删除颜色信息。)(背景信息:我需要这样做的原因是文档中的某些跨度被错误地设置为黑色前景色,而不仅仅是没有设置颜色信息,这会导致这些跨度在我的时候显示为黑底黑字当 Qt 将默认文本背景画笔更改为黑色而不是白色时,应用程序正在“深色模式”下运行。)

这是我尝试过的:

不幸的是,这不起作用;看起来mergeCharFormat()不明白我希望合并clearForeground()clearBackground()操作以剥离这些属性。

当然,我可以这样做tc.setCharFormat(noColorFormat);,这确实会正确剥离颜色属性;但它也会消除所有其他字符格式信息(字体等),这是不可接受的。

所以,理想情况下,我想找到一个 API,让我从QTextDocument. 或者,我想我需要QTextDocument一个一个地遍历所有 span,获取当前 span 的 char 格式,从格式中删除颜色属性,并将修改后的格式设置回 span。那很好;但我不知道如何以这种方式循环跨度。谢谢你的帮助。