问题标签 [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.
html - QTextDocument HTML表格宽度
我正在努力解决 QT5 问题。我正在尝试构建(然后在QPainter
对象上绘制)一个 HTML 表。这是我的代码:
该表在画家中正确显示但没有固定的列宽。为了达到这个结果,我几乎尝试了所有方法:
- 不支持设置
table-layout: fixed
但来自QT 的文档 (但宽度是!) - 设置
width
带或不带双引号,相对或绝对 div
以固定宽度插入每个单元格 a尝试(按照这个问题http://www.qtcentre.org/threads/31661-QTextDocument-style-CSS-does-not-work)在正文中添加样式。像这样
/li>
这些方法都不起作用。此外,如果我尝试添加一些空格来填充行,一旦绘制表格,它们就会被修剪掉。我还读到我可以使用WebView
来实现结果,但它太慢了。我被卡住了,我希望有人可以帮助我解决这个问题。
c++ - 更新 QTextDocument 的大小
我对 QTextDocument::size() 有疑问
每次用户手动向 TextEdit 输入内容时,文档的大小都会更新。(所以在 SIGNAL textChanged中它工作正常)。但是,我通过代码插入了一些文本。
当我使用这个时:
iHeight 始终等于 21,即使 textEdit 有多行文本。当我在我谈到的 SIGNAL 中使用同一行代码时,iHeight 神奇地变成了正确的数字。
所以基本上,我的问题是如何更新文档的大小以使其返回正确的数字?
c++ - QTextDocument:如何从缓存中删除资源
我的程序正在使用几个不同QTextBrowser
的 s 向用户显示内容。其中一些内容有图像。我从文件加载到QPixmap
s 并将它们添加到要显示的文本文档中。
假设这样的代码:
后来,我不再需要浏览器,所以删除它:
现在我的问题是:如何从缓存中删除添加到此已删除浏览器的资源?
QTextDocument
的文件提到:
void QTextDocument::addResource(int type, const QUrl & name, const QVariant & resource) 将资源资源添加到资源缓存中,使用类型和名称作为标识符。
因此,资源一直保留在缓存中,直到我关闭应用程序。但是我需要事先清除它,因为缓存中添加了很多资源,并且应用程序可能会连续运行几天。
c++ - QPrinter 无法正确设置 HTML 页面样式以在 PDF 文档中呈现图像
我想创建一个样式正确的 HTML 的 PDF 文档。这就是我正在尝试的:
我希望 PDF 有 2 页 - 第一个带有文本Hi,下一个和最后一个带有文本Bye。第一个页面的样式类似于它出现在具有相同标记的 HTML 页面中:
但是,PDF 的第一页内容完全混乱:
我如何使它看起来像预期的那样?
我在 HTML 文档中尝试的图像:http: //imgur.com/RnSghvV
平台 - Qt 5.3.1,32 位。OS X 优胜美地。
html - 设置 QTextDocument 画家的矩形(在哪里绘制)
我正在使用 QTextDocument::drawContents(painter) 在窗口简单的 html 上绘画
我想在窗口的一些边距内进行绘图,但我看不到指定绘画目标矩形的直接方法(在画家/窗口中)。
我想有几种方法可以做到:
使用 QTextDocuments::setMargin (尽管这不允许 left/top 使用不同的值。
将 html 放入样式中
<div>
对画家应用平移变换。
但是对于我想做的事情来说,这一切似乎有点太多了,我想如果我遗漏了一些直接的东西(就像你对 QPainter::drawText 所做的那样,你告诉目标矩形)
qt - 在 QTextDocument 中设置默认字符格式
我有一个QTextEdit
用户可以编辑QTextDocument
的地方。
我想为文档设置默认颜色和字体,但是,当文档中没有文本时,格式会被丢弃。
这是我的代码:
显示编辑器时,我看到一条黑色背景的线,具有一定的高度。所以这似乎奏效了。
但是,一旦我开始输入,行号就会减小,而且我看不到任何文本。选择输入的文本时,我可以看到它是黑色的(在黑色背景上),并且它的字体发生了变化。
当我使用光标插入一些非空文本时,一切正常,并且在编辑时格式不会改变:
有没有办法让编辑器保持格式,而不插入虚拟文本?
如本主题的其他问题中所述,我不能在编辑器上使用样式表或调色板。一切都必须使用QTextFormat
s直接完成
qt - 设置精确高度和宽度的 QGraphicsTextItem 文本内容
我需要创建具有精确宽度和高度的文本内容的文本项。
文字的高度是最重要的要求。
文本的位置应该相对于文本本身。
我还必须能够将它放置在画布上的确切位置。
假设一个(可打印的)画布(在较大的QGraphicsScene
)上,比如 5 英寸宽和 1 英寸高,我的文本应该能够从上到下从左到右拉伸 - 并放置在画布上,而不是部分地分开。
我正在QGraphicsTextItem
为我的项目类型分类。我正在调整它的大小,使用QTransform()
, 到所需的大小 - 以英寸或毫米或像素(72 * 英寸)为单位。
还将边距设置document()
为 0,内部的任何内容(如QTextBlockFormat
边距)也设置为 0。
我已经实现了一个setItemSize(QSizeF sz)
(以像素为单位的 sz),它可以QGraphicsTextItem
根据需要调整大小。
使用项目边界矩形初始化 sz。
假设没有换行,单行文本(一旦这个问题得到解决,多行可以单独解决)。
将项目添加到画布时,我仍然看到顶部和底部边距 - 这取决于字体选择。
我在项目周围画了一个矩形来查看它。
顶部/底部距离取决于字体选择。
我尝试使用字体度量来确定这些距离(paint()
我一直在画线以尝试确定文本适合的位置和矩形)。
我很高兴至少能够确定正确的大小以用于大写,没有重音或特殊字符字体(这将是一个开始,尽管我自然需要能够使用任何字符)。
但至少有某种方法可以确定文本内容的大小和位置(相对于项目的(0,0)),即使在最简单的情况下......
字体指标tightBoundingRect()
似乎是最准确的大小,但似乎无法确定它的位置,以便我可以以某种方式正确创建我的项目,并可能正确调整大小/移动它们以适合画布。
以下是我努力确定相对于项目的 (0,0) 的文本的至少确切大小和位置的一些示例(假设一旦我这样做,我就能够将该信息暴露给外部或包括转变在调整大小的项目变换中)。
请注意,字体度量所宣传的文本大小并不总是覆盖文本,并且对于不同的字体,我无法将紧密的边界矩形(洋红色)定位在文本本身周围。(我做了多次猜测,下面的代码只是一个 - 这些行试图显示不同的字体度量大小)。
以上是文本项继承绘制功能的实验QGraphicsTextItem
:
我也尝试过不使用QGraphicsTextItem
,而是在矩形内绘制文本。同样的事情也会发生。
(Qt 4.7 - 5.x)
c++ - QTextEdit 更新单 QTextCharFormat
我正在尝试为单个字符更新 QTextCharFormat。但它不适用:
输出:
知道缺少什么吗?
qt - 自定义项目委托[Qt]呈现的项目中错误的富文本高度(QTextDocument)
我的树视图项目委托中的 QTextDocument 的文本高度有问题。
我的paint() 和sizeHint() 方法几乎完全一样,只是计算不同高度的文本(相同的文本)。
高度差因字体而异。如果所有内容都以一种尺寸书写,则高度是正确的,但如果我使用不同的尺寸,则高度不匹配。
我阅读了有关使用字体度量或计算字体高度表单 paiter.boundingRect 的主题,但我不知道如何在 QTextDocument 中使用它。
我认为问题出在字体上,所以我使用下面的代码将字体全局更改为一种。它没有帮助。
我的自定义 itemDelegate 中的代码是:
和paint方法几乎一模一样。
sizeHint 中的文本用于确定项目高度,所以现在看起来如下图所示:
我在 Windows 上使用 Qt 5.7.1 MSVC 2015 64 位,但在带有 gcc 的 Ubuntu 16.04 上问题是一样的。