Заменить изображение другим в QTextEdit - PullRequest
0 голосов
/ 11 декабря 2010

Скажите, что в QTextEdit есть текст и изображения. И скажем, вы извлекаете HTML-код QTextEdit. Теперь, как можно найти места в HTML-коде, где создаются экземпляры изображений (), и заменить их другими изображениями, которые я имею в качестве объектов QImage, сохраняя положение и размер предыдущего изображения.

Другими словами, необходимо обмениваться изображениями, сохраняя при этом позицию и размер первого изображения, когда второе изображение сохраняется в программе как QImage.

Обратите внимание, что первое изображение может вообще не существовать. HTML-код, который можно использовать, может быть искусственно установлен в QTextEdit независимо от того, есть ли изображение, например file: //path/to/image/image_name.png или нет.

1 Ответ

1 голос
/ 14 декабря 2010
//Add images as resources
for(int i = 0; i < vectorOfImages.size(); i++ )
{
    QUrl url(QString("image_%1").arg(i));
    textEdit->document()->addResource(QTextDocument::ImageResource, url,  vectorOfImages.at(i));
}

//Process the htmlCode that is in QTextEdit.

int count = 0;
int pos = 0;

QRegExp rx("<img src=\".+/>");
while ((pos = rx.indexIn(htmlCode, pos)) != -1)
{
    QString strToReplace(QString("<img src=\"image_%1\" />").arg(count));
    htmlCode.replace(pos, rx.matchedLength(), strToReplace);
    pos += rx.matchedLength();
    count++;
}

textEdit->setText(htmlCode);
...