一、前言
本博客的主要目的在於對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(); }
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(); };
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); }
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