b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

使用QLabel在Qt中显示图片

电脑杂谈  发布时间:2020-04-14 06:14:48  来源:网络整理

qt显示图片_qt在launchpad中显示_qt qlabel 显示图片

首先,直接添加图片

1. 请参阅Qt的帮助文档以了解受支持的类型,即可以直接读取和显示的格式为BMPqt显示图片,GIF,JPG,JPEG,PNG,TIFF,PBM,PGM,PPM,XBM,XPM.

2. 显示图片的步骤:

首先打开图像;将图像文件加载到QImage对象中;然后使用QPixmap对象获取图像;最后使用QLabel选择要显示的QPixmap图像对象.

这是要插入的图片:

代码如下(在您需要在接口中添加Qlabel控件之前,对象名称是label):

qt显示图片_qt在launchpad中显示_qt qlabel 显示图片

QString filename(“F:\\Study\\junior\\Qt\\door\\1.jpg”);
        QImage* img=new QImage;
        if(! ( img->load(filename) ) ) //加载图像
        {
            QMessageBox::information(this,
                                     tr("打开图像失败"),
                                     tr("打开图像失败!"));
            delete img;
            return;
        }
        ui->label->setPixmap(QPixmap::fromImage(*img));

显示的效果如下图所示:

显然只能显示图片的一小部分.

第二,修改标签的大小

Qlable设置大小的功能是resize()

因此,在添加图片之前,请添加以下代码行以调整标签的大小.

qt显示图片_qt qlabel 显示图片_qt在launchpad中显示

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

显示结果:

图像似乎太大,标签的大小超过了窗口的大小,并且仍然无法完全显示qt显示图片,因此我仍然需要寻找其他合适的解决方案.

我认为标签的尺寸范围是固定的,因此图片的尺寸应按比例缩放. 查询数据后,可以采用以下方法:

首次使用

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

qt在launchpad中显示_qt qlabel 显示图片_qt显示图片

该功能设置标签的位置和大小,然后根据图片的大小缩放到合适的大小以进行显示

图像缩放的相关功能是

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

该函数的前两个参数指示缩放后图像的宽度和高度,第三个参数用于选择模式是否保持宽高比. 相关参数可以在qt帮助文档中查看. 接下来,查看使用缩放后的效果:

确实可以显示所有图片. 以下是mainwindows的构建代码:

{
    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));
}

qt在launchpad中显示_qt显示图片_qt qlabel 显示图片

2016.9.8

目标: 在Qt的实现中,当mjpeg-streamer在窗口中运行时,使用按钮控件查看本地显示的摄像机屏幕.

想法: 只要将图像标签直接插入html中,相应的地址“ /?action = stream”,当打开mjpeg-streamer时,相应的屏幕就可以显示在网页上,所以我想使用qt如果将地址作为标签中的图片引用,则可以直接看到屏幕,然后尝试根据上一次直接修改代码.

事实证明,我认为太简单了,p_w_picpath.load()只能打开本地图片,对于图片只能保存为本地图片,然后在控件中显示,所以接下来要解决的是如何在网上获取图片.

查看信息后,我发现Qt5的QtNetwork模块在下载方面为我们提供了非常方便的界面. 下面我将直接给出源代码. 有关相关功能的用法,请参阅帮助文档:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QNetworkAccessManager *manager;
    manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slot_replyFinished(QNetworkReply*)));
    QNetworkRequest request;
    request.setUrl(QUrl("http://www.bz55.com/uploads/allimg/150707/139-150FG51639-50.jpg"));
    manager->get(request);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::slot_replyFinished(QNetworkReply* reply)
{
 QPixmap pix;
 QByteArray data = reply->readAll();
 pix.loadFromData(data, "JPG");
 pix.save("/root/Qt/program/netpicture/tmp1.jpg", "JPG", 100);
 ui->textEdit->resize(500,500);
 ui->textEdit->append("<img src=/root/Qt/program/netpicture/tmp1.jpg width=400 hight=300>");
}

应该注意,它应该写在mainwindow.h


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-175019-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...