Qt Label 显示图片

一般这样子:

// 跟随比例变化
ui->label->setScaledContents(true);
QPixmap pixmap("./01.jpg");
//pixmap.load("./01.jpg");
// 让图片大小适应控件大小, 如果不需要,可以直接显示原图
QPixmap s_img = pixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui->label->setPixmap(s_img);

直接显示:

//单独显示的QLabel 其大小为内容即图片的大小,若将QLabel放入QMainWindow中则QLabel的大小为其初始大小。

/*
QLabel *label=new QLabel();
QImage image("/home/ws/Pictures/cat.png");
label->setPixmap(QPixmap::fromImage(image));
label->show();
*/

图片加滚动条:

//在QMainWindow中添加一个QScrollArea,再在QScrollArea中添加QLabel
//用来滚动查看图片,
//最好用代码创建,用Qtdesigner可能无法达到目的
/*
QMainWindow mw;

QLabel *label=new QLabel();
QImage image("/home/ws/Pictures/cat.png");
label->setPixmap(QPixmap::fromImage(image));

QScrollArea *sa=new QScrollArea(&mw);
sa->setWidget(label);
sa->resize(400,400);
mw.show();
*/

图片适应QLabel的大小:

//指定QLabel的大小,并让图片自适应QLabel的大小
//scaled函数可以将图片进行缩放,第一个参数是缩放后的大小,第二个参数
//可以保持图片宽高比,在本例中label大小为400,400,宽高比为1:1,加上该参数后
//由于原图不是1:1所以在400,400的显示区域中,并不会完全填满。若不带该参数,则会拉伸图片
//并填满该区域
QMainWindow mw;

QLabel *label=new QLabel(&mw);
label->resize(400,400);

QPixmap pix("/home/ws/Pictures/cat.png");
QPixmap dest=pix.scaled(label->size(),Qt::KeepAspectRatio);

label->setPixmap(dest);
mw.show();

可以使用QImage::fromData直接读取二进制:

QFile file("2.png"); // 实际为jpeg格式
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
qDebug() << QImage::fromData(data);

输出:QImage(QSize(1048, 1234),format=QImage::Format_RGB32,depth=32,devicePixelRatio=1,bytesPerLine=4192,sizeInBytes=5172928)

可看这篇博文:https://cloud.tencent.com/developer/article/1601595




posted @ 2024-11-19 20:06  double64  阅读(68)  评论(0编辑  收藏  举报