varias una notas insertar imagenes imagen desde como carpeta bloc c++ image qt qtextedit

c++ - una - insertar imagen html url



Varias formas de colocar una imagen en un QTextEdit (1)

Creo que esta es una pregunta muy simple, pero cuando copio una imagen no puedo pegarla en un QTextEdit. Pegar está inactivo! También me gustaría saber cómo arrastrar y soltar una imagen.

Por cierto, utilizo el siguiente código para insertar una imagen en un QTextEdit:

QTextEdit *textEditor = new QTextEdit(0); QTextDocumentFragment fragment; fragment = QTextDocumentFragment::fromHtml("<img src=''C://aaa.jpg''>"); textEditor->textCursor().insertFragment(fragment); textEditor->setVisible(true);

¿Se recomienda? ¿Cómo se hace esta operación?


La segunda forma es esta:

void TextEdit::insertImage() { QString file = QFileDialog::getOpenFileName(this, tr("Select an image"), ".", tr("Bitmap Files (*.bmp)/n" "JPEG (*.jpg *jpeg)/n" "GIF (*.gif)/n" "PNG (*.png)/n")); QUrl Uri ( QString ( "file://%1" ).arg ( file ) ); QImage image = QImageReader ( file ).read(); QTextDocument * textDocument = m_textEdit->document(); textDocument->addResource( QTextDocument::ImageResource, Uri, QVariant ( image ) ); QTextCursor cursor = m_textEdit->textCursor(); QTextImageFormat imageFormat; imageFormat.setWidth( image.width() ); imageFormat.setHeight( image.height() ); imageFormat.setName( Uri.toString() ); cursor.insertImage(imageFormat); }

La tercera forma es heredar QTextEdit y canInsertFromMimeData insertFromMimeData funciones canInsertFromMimeData e insertFromMimeData siguiente manera. Por cierto, este método permite utilizar los mecanismos de arrastrar y soltar o copiar y pegar.

class TextEdit : public QTextEdit { public: bool canInsertFromMimeData(const QMimeData* source) const { return source->hasImage() || source->hasUrls() || QTextEdit::canInsertFromMimeData(source); } void insertFromMimeData(const QMimeData* source) { if (source->hasImage()) { static int i = 1; QUrl url(QString("dropped_image_%1").arg(i++)); dropImage(url, qvariant_cast<QImage>(source->imageData())); } else if (source->hasUrls()) { foreach (QUrl url, source->urls()) { QFileInfo info(url.toLocalFile()); if (QImageReader::supportedImageFormats().contains(info.suffix().toLower().toLatin1())) dropImage(url, QImage(info.filePath())); else dropTextFile(url); } } else { QTextEdit::insertFromMimeData(source); } } private: void dropImage(const QUrl& url, const QImage& image) { if (!image.isNull()) { document()->addResource(QTextDocument::ImageResource, url, image); textCursor().insertImage(url.toString()); } } void dropTextFile(const QUrl& url) { QFile file(url.toLocalFile()); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) textCursor().insertText(file.readAll()); } };

Solo quería compartir lo que he encontrado durante una larga investigación :).