Qt之显示网络图片

简介:

简述

Qt中包含了网络模块-network,我们可以很容易的进行各种网络编程和数据传输,关于network的类很多,其中包含:支持DNS、HTTP、TCP/UDP等众多高级类,可以参考助手。

下面我们先看一个简单地示例:Qt显示一个网络图片。

效果

这里写图片描述

源码

创建按钮及显示图像的标签,连接信号槽。

m_pButton = new QPushButton(this);
m_pButton->setText(QStringLiteral("开始下载"));

m_pLabel = new QLabel(this);
m_pLabel->setFixedSize(140, 140);
m_pLabel->setScaledContents(true);

connect(m_pButton, SIGNAL(clicked(bool)), this, SLOT(startDownload()));

请求及结果处理,请求完成以后,我们可以去E盘查看下载后的图片。

// 点击按钮,开始请求
void MainWindow::startDownload()
{
    m_pButton->setEnabled(false);

    QNetworkRequest request;
    request.setUrl(QUrl("http://avatar.csdn.net/6/9/A/1_u011012932.jpg"));
    connect(&m_networkManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
    m_networkManager.get(request);
}

// 响应结束,进行结果处理-图片显示或错误处理
void MainWindow::replyFinished(QNetworkReply *reply)
{
    m_pButton->setEnabled(true);

    // 获取响应状态码,200表示正常
    // QVariant nCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);

    if (reply->error() == QNetworkReply::NoError)
    {
        QByteArray bytes = reply->readAll();
        QPixmap pixmap;
        pixmap.loadFromData(bytes);
        m_pLabel->setPixmap(pixmap);

        // 缓存到本地
        QFile file("E:/head.jpg");
        if (file.open(QIODevice::Append))
            file.write(bytes);

        file.close();
    }
    else
    {
        // 错误处理-显示错误信息,或显示上一次缓存的图片或叉图。
    }
}

处理方式

请求返回之后,首先我们必须判断错误码或错误状态,如果没有错误,正常读取数据,显示即可。但对于少数发生错误的情况时,我们可以按照下面的方式进行处理:

  1. 显示错误信息,或弹出提示框(不太友好)
  2. 显示叉图
  3. 显示上次缓存过的图片
相关文章
|
缓存 网络协议
Qt之显示网络图片
简述 Qt中包含了网络模块-network,我们可以很容易的进行各种网络编程和数据传输,关于network的类很多,其中包含:支持DNS、HTTP、TCP/UDP等众多高级类,可以参考助手。 下面我们先看一个简单地示例:Qt显示一个网络图片。 简述 效果 源码 处理方式 效果 源码 创建按钮及显示图像的标签,连接信号槽。 m_pB
1340 0
|
网络协议 网络安全 C++
Qt | 显示网络图片 QNetworkAccessManager
有事我们需要加载网络图片而非本地图片,文章介绍了qt控件显示网络图片的方法。
930 0
Qt 怎么添加图片文件?
1、新建一个.qrc的文件   2、起个.qrc的文件名   3、完成后,添加图片文件     4、如图 就好了。
1011 0
|
10月前
QT中按钮格式QSS代码
QT中按钮格式QSS代码
103 0
超简单!Qt Designer插入图片,styleSheet加入图片,Qt加入背景图片
超简单!Qt Designer插入图片,styleSheet加入图片,Qt加入背景图片
708 0
超简单!Qt Designer插入图片,styleSheet加入图片,Qt加入背景图片
|
XML JavaScript 数据格式
Qt5——图形与图片
Qt5——图形与图片
239 0
Qt5——图形与图片
|
开发工具 C语言
Qt编写自定义控件35-GIF录屏控件
一、前言 在平时的写作过程中,经常需要将一些操作动作和效果图截图成gif格式,使得涵盖的信息更全面更生动,有时候可以将整个操作过程和运行效果录制成MP4,但是文件体积比较大,而且很多网站不便于上传,基本上都支持gif动图,一般一个5秒左右的gif,800*600分辨率,可以很好的控制在500KB内,这样就比较完美的支持各大网站上传动图。
1034 0
|
7月前
【qt】如何添加背景图片?
【qt】如何添加背景图片?
132 0
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
选中项目,点击右上角的显示全部文件按钮,会将默认隐藏的文件显示出来,选中所需图片,右键,添加到项目,然后选择图片查看属性,生成操作选择resource。完毕。本人目前的解决方案。
608 41
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决

推荐镜像

更多