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文件对话框

相关推荐
.千余8 小时前
【C++】手写双向链表:list容器模拟实现
开发语言·c++·笔记·学习·其他
liulilittle9 小时前
过冲:拥塞控制的呼吸与盲行
linux·网络·c++·tcp/ip·计算机网络·tcp·通信
人道领域9 小时前
【LeetCode刷题日记】93.复原IP地址
java·开发语言·算法·leetcode
caimouse9 小时前
Reactos 第 3 章 内存管理 — 【中篇】Hyperspace、系统空间、API 与异常
c语言·开发语言·windows·架构
摇滚侠9 小时前
JavaWeb 全套教程 Listener 112-113
java·开发语言·servlet·tomcat·intellij-idea
小欣加油9 小时前
leetcode2574 左右元素和的差值
数据结构·c++·算法·leetcode·职场和发展
hixiong1239 小时前
C# Tokenizers.DotNet测试工具
开发语言·人工智能·llm
曹牧9 小时前
Java:Deprecated 是
java·开发语言
weixin_4617694010 小时前
通过数组和队列构造二叉树方法(用于算法测试),C++ vector不能直接使用null
数据结构·c++·算法·vector·nullptr·null
caimouse10 小时前
Reactos 第 4 章 对象管理 — 4.1 对象与对象目录
服务器·c语言·开发语言·windows·架构