首页 > 其他 > 详细

三、QT例子-打开一个图片并且显示

时间:2020-02-24 12:17:59      阅读:367      评论:0      收藏:0      [点我收藏+]

一、前言

        本博客的主要目的在于对QT有进一步的了解,单纯只使用QT。

         今天小例子主要是打开图片,然后显示出来,并且显示图片的路径。

二、工程建立

       1、参考前面 博客一QT安装过程里面的例子, 建立一个QT GUI Application

        2、打开.ui文件,然后拖动一个label控件,双击删除内容,然后拖动一个pushButtion, 更改内容为“打开图片”

          技术分享图片

          注意其名称如箭头指示,一个是label_2,一个是pushButton

            3、拖动一个lineText到如下位置:

               技术分享图片

 

            4、然后保存并且关闭ui文件

            5、建立工程如图(仍然是博客一的工程),配置属性:release x64

            技术分享图片

 

           7、代码如下:

          main.cpp:

技术分享图片
#include "HelloWorld.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    HelloWorld w;
    w.show();
    return a.exec();
}
View Code

         helloWorld.h

技术分享图片
#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_HelloWorld.h"
#include <Qlabel>
#include <QLineEdit>
#include <QImage>
#include <QFileInfo>
#include <QFileDialog>
class HelloWorld : public QMainWindow
{
    Q_OBJECT

public:
    HelloWorld(QWidget *parent = Q_NULLPTR);

private:
    Ui::HelloWorldClass ui;
private slots:
    void OpenImg();
};
View Code

        helloWorld.cpp

技术分享图片
#include "HelloWorld.h"

HelloWorld::HelloWorld(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    
    connect(ui.pushButton, SIGNAL(clicked(bool)), this, SLOT(OpenImg()));
}
void HelloWorld::OpenImg()
{
    
    QString OpenFile, OpenFilePath;
    QImage image;

    OpenFile = QFileDialog::getOpenFileName(this,
        "please choose an image file",
        "",
        "Image Files(*.jpg *.png *.bmp *.pgm *.pbm);;All(*.*)");
    if (OpenFile != "")
    {
        if (image.load(OpenFile))
        {
            //仅仅只是导入之后的图片仍然是原来的大小,这个时候我们需要缩放
            ui.label_2->setPixmap(QPixmap::fromImage(image).scaled(ui.label_2->size()));
        }
        
    }
    //显示所有的图片路径
    QFileInfo OpenFileInfo;
    OpenFileInfo = QFileInfo(OpenFile);
    OpenFilePath = OpenFileInfo.filePath();
    ui.lineEdit->setText(OpenFilePath);
}
View Code

  8、编译运行

  点击打开图片,然后就可以显示如下,并且可以显示图片的路径

           技术分享图片

 

 三、遇到问题

          当代码第一次写入的时候,这个时候控件的名字下面会出现波浪线,如下。        

     技术分享图片

 

         放上去的时候会显示没有ui没有成员label_2.

         这种情况就是ui界面已经定义了控件,但是在cpp里面却没有办法调用。

   处理办法如下:

    1、点击ui文件,然后右键选择编译

          技术分享图片

 

          技术分享图片

 

    2、然后选择HelloWorld项目,右键选择重新扫描解决方案

         技术分享图片

 

        如果不行多试几次。

四、参考博客

        问题:控件在cpp里面无法调用

         https://blog.csdn.net/qq_38378235/article/details/82288874

        打开显示图片:

         https://blog.csdn.net/weixin_42704090/article/details/90400427

 

三、QT例子-打开一个图片并且显示

原文:https://www.cnblogs.com/fantianliang/p/12356131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!