QTextEdit添加图片的几种方式

网友投稿 762 2022-09-04

QTextEdit添加图片的几种方式

方式一

QTextEdit *textEditor = new QTextEdit(0);QTextDocumentFragment fragment;fragment = QTextDocumentFragment::fromHtml("");textEditor->textCursor().insertFragment(fragment);textEditor->setVisible(true);

方式二

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

方式三

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

方法三支持图片拖放和粘贴

参考链接:​​https://stackoverflow.com/questions/3254652/several-ways-of-placing-an-image-in-a-qtextedit​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【搞定Go语言】第2天9:Go语言基础之指针
下一篇:为什么Redis 是单线程却能支撑高并发?(为什么redis单线程还这么快)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~