三、QT例子-打開一個圖片並且顯示


一、前言

        本博客的主要目的在於對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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM