一、前言
本博客的主要目的在于对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_OBJECTpublic: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