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

时间:2012-07-08 00:30:31

标签: qt qt4

我用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();
}

1 个答案:

答案 0 :(得分:4)

快速解决方案

只需致电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();
}

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