声明:该专栏为本人学习Qt知识点时候的笔记汇总,希望能给初学的朋友们一点帮助(加油!)
往期回顾:
【QT入门】qmake和cmake的简单区别-CSDN博客
【QT入门】VS qt和QtCreator项目的相互转换-CSDN博客
【QT入门】Qt架构与三个窗口的区别-CSDN博客
【QT入门】实现一个简单的图片查看软件
一、最终实现效果
点击打开按钮,弹出文件窗口,可以自行选择图片,确定选举后图片将展示在下面的LineEdit控件里,图片路径也将显示出来
二、需要用到的控件
1.1QLabel控件
设置图片用到了QPixmap,这个类的构造方法有一个就是直接给图片路径就可以
1.2QLineEdit控件
1.3QPushButton控件
几个类设置文本和获取文本所用的方法是一样的。
三、需要实现的功能
2.1打开目录选择图片并获取图片路径
这里用到了QFileDialog类和其方法getOpenFileName
QFileDialog::getOpenFileName()
static QString getOpenFileName(QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = nullptr,
Options options = Options());
我们看一下他的几个参数:
QWidget *parent = nullptr: | 指定文件对话框的父窗口,即文件对话框将显示在哪个窗口上。默认值为nullptr,表示没有父窗口。 |
const QString &caption = QString(): | 指定文件对话框的标题,即对话框的显示名称。默认值为空字符串QString()。 |
const QString &dir = QString(): | 指定文件对话框打开时显示的初始目录。默认值为空字符串QString()。 |
const QString &filter = QString(): | 指定文件过滤器,用于限制用户选择的文件类型。默认值为空字符串QString(),表示不设置任何过滤器。 |
QString *selectedFilter = nullptr: | 用于存储用户选择的过滤器的指针。如果用户选择了过滤器,则该参数将指向用户选择的过滤器。默认值为nullptr,表示不存储选择的过滤器。 |
Options options = Options(): | 用于指定文件对话框的选项,例如显示隐藏文件、只显示目录等。默认值为Options(),表示使用默认选项。 |
我们写入的参数如下:
getOpenFileName(this,"请选择图片","C:/","图片(*.png *.jpg);;");
this表示父窗口为当前窗口
"图片(*.png *.jpg);;" 是用来过滤文件类型的参数。这里的*.png表示只显示具有.png扩展名的文件,而*.jpg表示只显示具有.jpg扩展名的文件。"图片(*.png *.jpg);;"中的分号用于分隔不同类型的文件过滤器。
如果要允许用户选择任何类型的文件,可以将过滤器设置为"All Files (*)"
2.2显示图片的名字
获取到文件路径以后,直接放进去展示就可以了,很简单的,不过放进去之前可以先进行一个简单的非空判断
if(filename.isEmpty())
{
return;
}
ui->lineEdit_image->setText(filename);
2.3显示图片
最后就是用一个QPixmap展示图片,调用的同时初始化了函数
ui->label_photo->setPixmap(QPixmap(filename));
四 、最终实现代码
void Widget::on_btn_open_clicked()
{
QString filename = QFileDialog::getOpenFileName(this,"请选择图片","C:/","图片(*.png *.jpg);;");
if(filename.isEmpty())
{
return;
}
ui->lineEdit_image->setText(filename);
ui->label_photo->setPixmap(QPixmap(filename));
}
没有写注释,大家有不太明白可以再查查资料,会理解的更好。
都看到这里了,点个赞再走呗朋友~