2010-12-11 37 views
0

Dites qu'il y a un texte et des images dans un QTextEdit. Et dites que vous extrayez le code HTML du QTextEdit. Maintenant, comment est-il possible de trouver les endroits dans le code HTML où les images sont instanciées() et les remplacer par d'autres images que j'ai en tant qu'objets QImage conservant la position et la taille de l'image précédente. En d'autres termes, il est nécessaire d'échanger des images tout en conservant la position et la taille de la première image, lorsque la seconde image est stockée dans le programme en tant qu'image Q.Remplacer l'image par une autre dans QTextEdit

Veuillez considérer que la première image peut ne pas exister du tout. Le code HTML qui peut être mis à la QTextEdit artificiellement sans tenir compte si c'est une image comme file: //path/to/image/image_name.png ou non.

Répondre

1
//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);