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函数
void QWidget::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中来。文章来源:https://www.toymoban.com/news/detail-444775.html
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));
这样就可以看到完整的老婆了文章来源地址https://www.toymoban.com/news/detail-444775.html
到了这里,关于使用QLable显示图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!