QT基础1:QT与C++的数据格式转换与图片相关
1、数据格式转换
1.1 QString与String
QString转换String
string s = qstr.toStdString();
String转换QString
QString qstr2 = QString::fromStdString(s);
1.2 string与QByteArray
std::string => QByteArray
QByteArray byteArray(stdString.c_str(), stdString.length());
QByteArray => std::string
std::string stdString(byteArray.constData(), byteArray.length());
1.3 QJson与Qstring
QJson=> QString
QString(QJsonDocument(json).toJson(QJsonDocument::Compact));
c++ Json =》string =》char*
imgJson.toStyledString().c_str()
1.4 QByteArray=>QJson
QJsonObject objget = QJsonDocument::fromJson(ByteDate).object();
1.5 QJson => string
QJsonObject obj;
obj.insert("image",QJsonValue(QString(base64)));
//printf("%s",obj);
//内存中的数据写到文件
QJsonDocument doc(obj);
//将json对象转换成字符串
QByteArray imgData=doc.toJson();
//QByteArray->std::string
std::string imgstr(imgData.constData(), imgData.length());
2、QT显示一张图片
QString imgPath = "xxx.jpg";
QImage img(imgPath);
QPixmap pix(imgPath);
ui->picture->setPixmap(pix);
3、QT与opencv显示视频与截取帧
3.1、初始化
//open camera ; 204 , 0 ,1 ,202
camera = cvCreateCameraCapture(1);
//start timer 50ms
timer.start(50);
3.2、截取帧
frame = cvQueryFrame(camera);
//transform QImage
img = QImage((const uchar*) frame->imageData,
frame->width,
frame->height,
QImage::Format_RGB888).rgbSwapped();
//use label show a picture
ui->frame->setPixmap(QPixmap::fromImage(img));
4、JPG转base64
QString imgPath = "xxx.jpg";
QImage img(imgPath);
QByteArray ba;
QBuffer buf(&ba); //用QByteArray构造QBuffer
buf.open(QIODevice::WriteOnly);
img.save(&buf, "JPG"); //把Image写入Qbuffer
QByteArray base64 = ba.toBase64(); //不包含编码头得base64
5、QT界面大小的设置背景图片
ui->setupUi(this);
this->resize(1024,600);
//set background pic
this->setAutoFillBackground(true);
QPalette playpalette = this->palette(); //
playpalette.setBrush(QPalette::Window, QBrush(QPixmap("./pic/2mm.jpg").scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)));
this->setPalette(pl