2

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

1 に答える 1

9

手っ取り早いソリューション

タグを呼び出し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();
}

警告: 私はこれをテストしていません。コンパイルさえできないかもしれません。

于 2012-07-27T09:27:19.117 に答える