我使用 QTextCursor 在 QTextEdit 中插入了几张图片,现在我应该如何保存整个内容?
我的第一个想法是遍历 QTextCursor 的所有位置,但我没有找到合适的界面来使用。
使用中的示例代码:
QTextCursor cursor = ui->textEdit->textCursor();
cursor.insertImage(QImage ("/secure/Common/Pictures/icons/gimp.svg"));
ui->textEdit->setTextCursor(cursor);
QTextDocument *document = ui->textEdit->document();
QStringList images;
QTextBlock b = document->begin();
while (b.isValid()) {
for (QTextBlock::iterator i = b.begin(); !i.atEnd(); ++i) {
QTextCharFormat format = i.fragment().charFormat();
bool isImage = format.isImageFormat();
if (isImage)
{
images << format.toImageFormat().name();
qDebug() << document->resource(QTextDocument::ImageResource,
QUrl(format.toImageFormat().name())).toByteArray().size();
}
}
b = b.next();
}
Run Code Online (Sandbox Code Playgroud)
快速而肮脏的解决方案
只需调用document->toHtml()并解析img标签。
清洁液
迭代QTextFragment文本中的所有内容:
QStringList images;
QTextBlock b = document->begin();
while (b.isValid()) {
for (QTextBlock::iterator i = b.begin(); !i.atEnd(); ++i) {
QTextCharFormat format = i.fragment().charFormat();
bool isImage = format.isImageFormat()
if (isImage)
images << format.toImageFormat().name();
}
b = b.next();
}
Run Code Online (Sandbox Code Playgroud)
警告:我没有对此进行测试,它甚至可能无法编译。
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |