上一篇博客写的是利用Qt的UDP协议传输图片文件。但是有一些问题,比如说还得自己新建一个文件夹存放图片等等。项目想实现的功能是在一个Qt工程的label打开图片文件,另一端就能显示同样的图片,所以加以改进。不需要把接收到的图片写入文件夹中,而是直接把数据都读到picBuffer里面,最后统一显示在label上面。
过程特别曲折,现在也不敢保证完全明白,还望有明白的高人指点。
最开始我写的是这样子的:
发送端:
QString fileName=QFileDialog::getOpenFileName(this,tr("choose image"),".",tr("Images (*.jpg *.png)"));
if(fileName.isEmpty()){
return;
}
QPixmap mPix;
mPix.load(fileName);
ui->picLabel->setPixmap(mPix);
//加载完图片,需要把这张图片传送出去
file.setFileName(fileName);
if(!file.open(QIODevice::ReadOnly)) return;
QByteArray begin ="Begin!";
PicSocket->writeDatagram(begin,localaddr1,10004);//发送begin表示新的图片开始发送了
while(!file.atEnd()){
QByteArray line = file.read(8000);
localaddr1.setAddress("162.