我要用QT写一个客户端,从服务器上获取视频信息,就要一帧帧图片下载然后显示在lable上,
但是事实上要是只收一张图片,没问题,能显示,但是循环播放的话,数据确实在循环下载着,
但是界面却卡死了,图片也一张都显示不出来,显示的代码:
pixmap->loadFromData((const uchar *)picbuf, lenth, "PNG");
ui->label->setPixmap(*pixmap);
烦恼了两天,求帮助,万分感谢!
关于QT的lable图片更新
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- jieray311 2016-06-21 12:56关注
首先,建立Qt Gui Application项目。
1.控件
控件类型 控件名称 控件说明 文本
QLabel imagelabel 显示图片 TextLabel
QCommandlinkButton commandbuttonnext 显示下一张图片 下一张
2、添加资源
下载好显示的图片,放到项目目录的images文件夹(自己创建)下。 右击项目->添加新文件(New File)->QT->QT Resource file 右下角选择路径,name:images 单击“finish”。 然后选中“image.qrc”, 在编辑界面正下方,单击“Add"->"add prefix"添加路径前缀(即图片文件的路径), 之后,还在这里"Add files" 选择要添加的图片。
3、代码
1)头文件mainwindow.h, 类MainWindow中添加
private: QStringList list; //图片列表 int currentImage; //当前图片编号
2) 在图形界面,右击commandlinkbuttonnext,选择”转到槽“, 添加槽函数
3) 在mainwindow.cpp中
添加头文件#include <QMessageBox> , #include <QFileDialog> 在构造函数中添加: ui->setupUi(this);//这是系统自动生成的 //一下为添加代码 this->currentImage = 0; //初始化图片列表 this->list<<"./images/1.jpg"<<"./images/2.jpg"<<"./images/3.jpg"; //注意路径的表示,否则出错 ui->imagelabel->setBackgroundRole(QPalette::Base); ui->imagelabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); ui->imagelabel->setScaledContents(true); resize(500, 400); QString fileName = list.at(this->currentImage); if(!fileName.isEmpty()) { QImage image(fileName); if(image.isNull()) { QMessageBox::information(this, tr("Image Viewer"), tr("Cannot load %1.").arg(fileName)); return ; } ui->imagelabel->setPixmap(QPixmap::fromImage(image)); }
给槽函数on_commandlinkbuttonnext_clicked()添加:
if(this->currentImage == 2) this->currentImage = 0; else this->currentImage++; QString fileName = list.at(this->currentImage); if(!fileName.isEmpty()) { QImage image(fileName); if(image.isNull()) { QMessageBox::information(this, tr("Image Viewer"), tr("Cannot load %1.").arg(fileName)); return ; } ui->imagelabel->setPixmap(QPixmap::fromImage(image)); }
4.其他不变,运行可以看到效果。
5.注意事项:一定注意初始化时,路径名和”add prefix“ 时的路径名, 如果不成功,可以多次试验。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥200 uniapp长期运行卡死问题解决
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
- ¥15 乘性高斯噪声在深度学习网络中的应用
- ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集