QT学习:给label添加图片资源

方法一:

首先,要在项目里添加一个资源文件。

 然后给资源文件添加前缀,把我们自己的图片拷贝进去。

此处右击可以拷贝图片路径

在ui设计界面添加一个label,起名为labelpicture。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->labelpicture->setPixmap(QPixmap("://image/timg.jpeg"));
    ui->labelpicture->setScaledContents(true);
}
上面代码中的://image/timg.jpeg就是通过“拷贝图片路径”得到的,不用自己写路径,避免出错。setScaledContents是为了让图片自适应label,不然显示不完整。

 

 

方法二:

qt中如果你要添加图片资源文件我们需要执行以下步骤:

(1)先找好一张图片,这里就不多说了,网上资源很多。

(2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下

 

(3)在qt中新建一个资源文件,注意右键点击主文件找到添加新文件

(4)找到QT 点击右边的QT Resource File

 

(5)点击choose,然后我们自定义一个名字

 

(6)如果是第一次添加则要找到刚才添加的资源文件,都是在最下面,右键点击Open in Editor

 

(7)接着我们窗口的右边,点击添加前缀

 

(8)我们在这一步的时候可以改一个自己的前缀

 

(9)点击完添加前缀我们发现原来黑掉的添加文件按钮亮了

 

(10)点击添加文件,会自动寻找到工程文件所在的目录下

 

(11)我们点击进到图片所在的文件image中选择自己要添加到qt图片资源文件中

 

 

(12)添加进去的图片将会显示先back文件下

 

到这里我们的图片就成功添加到图片资源文件中了,我们可以使用里面的文件,不用再担心我们的图片没有拷贝到工程文件下而无法显示了。

 

我们来个简单的使用例子,图片放到按钮中显示

(一)拖进一个按钮,右键点击找到改变样式表

 

(二)从改变样式表点击进去,找到添加资源,继续点击border-image

 

 

(三)点击进去点击image,看到文件下的图片,点击,然后点击ok

 

(四)点击Apply或者ok,按钮上将显示刚才的图片

 

到这里我们的按钮图片就完成了,当然我们也可以用代码实现,前提是图片资源文件中有这张图片,如下

ui->pushButton->setStyleSheet("border-image: url(:/back/image/www.ico.la_dd771a3447af3072c438047f09343551_64X64.ico);");
"border-image: url(:/back/image/www.ico.la_dd771a3447af3072c438047f09343551_64X64.ico);"
同样是右键按钮,然后改变样式表,就可以看到路径了

 

方法三:

参考Qt的帮助文档,可支持的类型,即可以直接读取并显示的格式有BMP、GIF、JPG、JPEG、PNG、TIFF、PBM、PGM、PPM、XBM、XPM。具体的步骤为:先打开一个图像;将图像文件加载进QImage对象中;再用QPixmap对象获得图像;最后用QLabel选择一个QPixmap图像对象显示。

第一步:在UI界面添加一个Label控件,对象名为label

QString filename(“C:\\SensorsData\\BASLER\\code\\opencv\\vehicle.jpg”);
QImage* img=new QImage;
if(! ( img->load(filename) ) ) //加载图像
{
    QMessageBox::information(this,
                 tr("打开图像失败"),
                 tr("打开图像失败!"));
    delete img;
    return;
}
ui->label->setPixmap(QPixmap::fromImage(*img));

上述路径为图片的路径,执行程序后,发现label只显示了图片的一小部分,因此需要修改label的大小

第二步:修改label的大小

Qlable设置大小的函数有resize(),所以在添加图片前加上这行代码可以先调整好label的大小。

ui->label->resize(img->width(),img->height());

但是运行后发现图片过大,label可能会超过设置的窗口的大小,还是不能完全显示,需要找到其它合适的方法。label的大小范围是固定的,所以应该按照比例缩放图片的大小,采用如下的方法。

第三步:按比例缩放图片大小

首先设置label的位置和大小

label->setGeometry(0,0,400,300);//前两个参数表示label左上角位置后面分别是宽和高

接着根据图片的大小缩放到合适的大小显示,图片缩放的相关函数是

img->scaled(width,height,Qt::KeepAspectRatio);

该函数前两个参数表示的是缩放之后图片的宽高,而第三个参数的作用是选择模式是否保持长宽比,下面是完整的构建函数的代码

{
    ui->setupUi(this);
    QString StrWidth,StrHeigth;
    QString filename="F:\\Study\\junior\\Qt\\door\\1.jpg";
            QImage* img=new QImage,* scaledimg=new QImage;//分别保存原图和缩放之后的图片
            if(! ( img->load(filename) ) ) //加载图像
            {
                QMessageBox::information(this,
                                         tr("打开图像失败"),
                                         tr("打开图像失败!"));
                delete img;
                return;
            }
            int Owidth=img->width(),Oheight=img->height();
            int Fwidth,Fheight;       //缩放后的图片大小
            ui->label->setGeometry(0,0,400,300);
            int Mul;            //记录图片与label大小的比例,用于缩放图片
            if(Owidth/400>=Oheight/300)
                Mul=Owidth/400;
            else
                Mul=Oheight/300;
            Fwidth=Owidth/Mul;
            Fheight=Oheight/Mul;
            *scaledimg=img->scaled(Fwidth,Fheight,Qt::KeepAspectRatio);
            ui->label_text->setText(QString("width: ")+StrWidth.setNum(Fwidth)
                                    +QString("\nheight: ")+StrHeigth.setNum(Fheight));
            ui->label->setPixmap(QPixmap::fromImage(*scaledimg));
}

 

  • 16
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值