方法一:直接显示
QTextEdit有一个属性,就是可以借助html标记来插入图片,例如:
|
于是,首先想到的办法就是修改 "
|
但结果是,我太异想天开了,经过试验,证明这种方法只适用于本地图片。
方法二:先下载保存至本地,然后再加载图片
既然
就下载而言,Qt5的QtNetwork模块为我们提供了相当便利的接口,这里就不讲了。
说说保存网络图片数据吧。
原始的做法是读取网络资源的原始数据,再经过对应格式的转换,变成我们需要的文件。这里由于保存的是图片文件,因此可以使用QPixmap的QPixmap::loadFromData和QPixmap::save方法。
我们来看官方的文档说明:
bool QPixmap::loadFromData(const QByteArray * data, uint len, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); 其中:
|
支持的图片格式:

支持的图片转换标识:

接下来看QPixmap::save :
bool QPixmap::save(const QString & fileName, const char * format = 0, int quality = -1) const;其中: const QString & fileName : 希望保存的图片名称 const char * format : 希望保存图片格式int quality : 希望保存的图片质量(-1为默认值,若自定义,则取之区间为[0-100],0为最大压缩,100为不压缩,即原始图片) |
好了,基本知识掌握之后就可以来写代码了,主要部分粘贴如下:
//构造函数 MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);pixmap = new QPixmap;manager = new QNetworkAccessManager(this);connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slot_replyFinished(QNetworkReply*)));QNetworkRequest request;request.setUrl(QUrl("http://img0.bdstatic.com/img/image/shouye/dengni63.jpg"));manager->get(request);} void MainWindow::slot_replyFinished(QNetworkReply* reply){QPixmap pix;QByteArray data = reply->readAll();pix.loadFromData(data, "JPG");pix.save("c://tmp1.jpg", "JPG", 100);ui->textEdit->append(" |
看下效果,哈哈,度娘图片首页推荐的图片,不要想太多:

PS:
之后会研究QTextEdit的拖拽复制功能,日后提供更新。