首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextEdit:如何保存使用QTextCursor插入的图像?

QTextEdit:如何保存使用QTextCursor插入的图像?
EN

Stack Overflow用户
提问于 2012-07-08 08:30:31
回答 1查看 2.7K关注 0票数 2

我用QTextCursor在QTextEdit中插入了几张图片,现在我该如何保存整个图片呢?

我的第一个想法是遍历QTextCursor的所有位置,但我没有找到合适的接口。

使用中的示例代码:

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-27 17:27:19

快速解决方案

只需调用document->toHtml()并解析img标记。

清洁解决方案

遍历文本中的所有QTextFragment

代码语言:javascript
复制
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();
}

警告:我没有对此进行测试,它甚至可能无法编译。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11379783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档