两天前,一个朋友问我如何将图片上传到,然后从中读取和显示图片. 因为我刚刚学过Qt,所以很多事情还不清楚,然后我去百度举了一些例子,发现互联网上的例子写得很模糊. 今天我终于写了这个功能,现在我将整理出来并与大家分享.
首先,我们需要了解以下类别: QPixmap QByteArray QFile,关于在Qt中使用,您可以百度.

总体思路是这样的: 通过QFile类读取图片,将二进制数据存储在QByteArray中,然后将QByteArray存储在中,并在读取时在中读取二进制数据,并将其存储在QByteArray中,然后然后使用QPixmap加载要显示的QByteArray.
首先通过QFile打开文件,然后将文件内容读入QByteArray:

QByteArray mdata; QFile *file=new QFile(path); file->open(QIODevice::ReadOnly); mdata=file->readAll(); file->close();
然后将QByteArray中的数据存储到中

QSqlQuery query;
query.prepare("UPDATE sql_cmsb SET poto = ? WHERE cms_id = 30");
query.addBindValue(mdata);
if(query.exec())
QMessageBox::information(this,tr("提示"),tr("上传成功"));
由于我已将QSqlDatabase添加到主函数中,所以不要问我为什么不创建连接. 此时,图片存储在中. 您会发现此方法可以存储任何形式的文件(当然,我只是以这种方式推测的,而我并未练习).

然后我们可以继续执行第二步: 读取中的数据并显示.
QSqlQuery query;
QPixmap poto;
query.exec("select poto from sql_cmsb where cms_id=30");
query.first();
poto.loadFromData(query.value(0).toByteArray());
ui->label->setPixmap(poto);
QPixmap类具有loadFromData的成员函数,该函数可以直接从QByteArray读取数据以进行分析. 最后qt保存大型数据,标签的setPixmap方法在标签控件上显示QPixmap.
此过程结束后,如果您有兴趣,可以存储其他文件,例如exe文件,视频文件等. 请记住同时存储其文件格式,因为某些文件无法直接从内存中读取,或放置最好在本地执行其他操作,然后在操作后将其删除. 本文是我的总结qt保存大型数据,希望对他人有所帮助.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-216618-1.html
这首最好听
都是这样