QLabel主要用来显示文本的组件,但是也有显示图片的方法,下面介绍一下如何用QL abel显示图片。
向QLabel中添加图片
可以使用QImage读取图片再通过QPixmap方法在QLabel中显示
也可以直接使用QPixmap读取图片,显示。他们的效果都是一样的。
QImage img("wife.jpeg");
ui->label->setPixmap(QPixmap::fromImage(img));// QPixmap pix;// pix.load("wife.jpeg");// ui->label->setPixmap(pix);
显然,这是因为label的大小,导致不能将图片全部显示出来,那么我们重新设置label大小是不是就可以了?
设置QLabel位置与大小
使用setGeometry函数
由于QLabel是从QWidget中继承而来,所以直接使用QWidget::setGeometry函数
voidQWidget::setGeometry(int x,int y,int w,int h)
(x, y)表示其在窗口中的位置,(w, h)表示,确定位置后窗口的宽和长,这样就确定了一个窗口具体的位置和大小。
这里,我们将QLabel设置成和MainWindow一样大,再看一下QLabel显示图片。
QImage img("wife.jpeg");int WindowW =this->width();int WindowH =this->height();
ui->label->setGeometry(0,0, WindowW, WindowH);
ui->label->setPixmap(QPixmap::fromImage(img));
虽然显示了图片很多内容,但是还是不能将图片全部显示出来,这里就可以使用缩放的方法,将图片按照一定的比例缩放,然后再放入QLabel中来。
scaled()函数缩放图片
QImage QImage::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation)const
- size表示给定缩放后的尺寸。
- aspectRatioMode 选择缩放的模式,如果是IgnoreAspectRatio模式(缺省)即按照给定的尺寸显示; KeepAspectRatio,则按照给定的尺寸将图像缩放为内部大小尽可能大的矩形,从而保留纵横比。 KeepAspectRatioByExpanding,则图像将缩放为一个外部尺寸尽可能小的矩形,从而保持纵横比。 我们这里选择KeepAspectRatio模式即可。
- TransformationMode 模式,是否让图像看起来更平滑。 Qt::FastTransformation(缺省),执行的更快,没有平滑。 Qt::SmoothTransformation,使得图像更平滑。 这里选择Qt::SmoothTransformation。
QImage img("wife.jpeg");int WindowW =this->width();int WindowH =this->height();
ui->label->setGeometry(0,0, WindowW, WindowH);
QImage scalimg = img.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui->label->setPixmap(QPixmap::fromImage(scalimg));
这样就可以看到完整的老婆了
版权归原作者 LSC__lsc 所有, 如有侵权,请联系我们删除。