【发布时间】:2018-01-24 14:13:25
【问题描述】:
我有这个设置:
// ...
// variable document is a QTextDocument* which has some 'RichText' + 'Images'
QTextEdit textEdit;
textEdit.setDocument(document);
textEdit.setLineWrapMode(QTextEdit::LineWrapMode::NoWrap);
auto image = QImage(document->size().width(), document->size().height(),
QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter painter(&image);
document->drawContents(&painter);
// ...
我这样做是为了让我的文本在一个长的水平 QImage 中呈现(因此是“NoWrap”LineWrapMode),所以我可以使用 QImage::copy(QRect) 一次选择它的一小部分并创建一个滚动文字效果。
我这样做的原因是我需要在最后有一个 QImage,然后我会将其缓冲区 (QImage::bits()) 提供给我用作最终输出的硬件.
所以它工作得很好,它显示带有字体和颜色的格式化文本以及除图像之外的所有内容,它似乎跳过它们,注意“带有图像的文本结果”图片中的文件图标。
这只是编辑器中的文本
这只是文本的结果
这是编辑器中带有图像的文本
这是文字与图片的结果
这就是我向 QTextDocument 插入图像的方式:
QImage image(url.toLocalFile());
if (image.isNull())
return;
image = image.scaledToHeight(getDocumentHeight(), Qt::SmoothTransformation);
auto filename = QUrl(url.fileName());
textEdit->document()->addResource(QTextDocument::ImageResource, filename, image);
textEdit->textCursor().insertImage(filename);
所以我认为不是因为“DrawContents”找不到图像资源文件或类似的东西。
我该怎么办?有什么我想念的吗?非常感谢您对此事的任何帮助! ;)
【问题讨论】:
-
@eyllanesc 它们属于两个不同的类别,因为它们是一个更大项目的一部分。无论如何,就您而言,它似乎运行良好,我不知道为什么,您做了什么?我在 ubuntu linux 上。