12.QT文件对话框 文件的弹窗选择-QFileDialog

目录

前言:

技能:

内容:

[1. 界面](#1. 界面)

2.信号槽

3.其他函数

参考:


前言:

通过按钮实现文件弹窗选择以及关联的操作

效果图就和平时用电脑弹出的选文件对话框一样

技能:

QString filename = QFileDialog::getOpenFileName(this, "弹窗标题",

"E://","Images(*.png *.jpg)");

弹出对话框选择文件

内容:

1. 界面

首先简单的添加ui布局,line edit 、PushButton、label

2.信号槽

ui编辑模式中,右键PushButton转到槽,选择clicked( ),

完成槽函数,记得#include<QFileDialog>

这里是可以选择png和jpg类型的图片,然后显示在下面的label中

cpp 复制代码
void Widget::on_pushButton_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this, "弹窗标题",
                                                    "E://","Images(*.png *.jpg)");
    ui->lineEdit->setText(filename);
    ui->label->setPixmap(filename);
}

至于图片更完美的展示,可以看之前的文章

3.QT图片完整显示(联机VS2022版)

主要是getopenFileName函数,在Qt6中的帮助文档和例子是这样的

cpp 复制代码
[static] 
QString QFileDialog::getOpenFileName(QWidget *parent = nullptr,
                                      const QString &caption = QString(), 
                                          const QString &dir = QString(), 
                                       const QString &filter = QString(), 
                                       QString *selectedFilter = nullptr, 
                                QFileDialog::Options options = Options()) 



QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                 "/home",
                                                 tr("Images (*.png *.xpm *.jpg)"));

返回值是QString,也就是文件的路径,可以拿这个路径干很多事,比如显示图片

第一个参数,父指针,我们就用this就好,这个必须有

第二个参数,应该是对话框的标题,后面的依次是文件路径和筛选器

文件路径只是提供快捷通道,弹窗内我们依然能选择不是这个路径的文件

但是筛选器是固定的,我们只能看到被筛选后的文件,弹窗内无法选择其他类型的,我们也可以用空的引号,这样可以选择所有类型,如果罗列多个用*隔开,参考官方例子。但是又好像很宽松,格式不对也能正常选择,这里不是很懂,懂哥可以评论讲一下

cpp 复制代码
QString filename = QFileDialog::getOpenFileName(this, "弹窗标题",
                                                    "E://","");
3.其他函数

还有很多其他的函数可以查看帮助文档,比如可以选取多个文件

参考:

【Qt学习系列】12.Qt文件对话框

相关推荐
V***u45321 分钟前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
这是程序猿38 分钟前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦42 分钟前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学1 小时前
C++ --- 多态
开发语言·c++
颜*鸣&空1 小时前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt
槁***耿1 小时前
JavaScript在Node.js中的事件发射器
开发语言·javascript·node.js
U***49831 小时前
JavaScript在Node.js中的Strapi
开发语言·javascript·node.js
@大迁世界1 小时前
相信我兄弟:Cloudflare Rust 的 .unwrap() 方法在 330 多个数据中心引发了恐慌
开发语言·后端·rust
大侠课堂2 小时前
C#经典面试题100道
开发语言·c#
X***E4632 小时前
PHP在电商中的订单处理
开发语言·php