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

相关推荐
废弃的小码农31 分钟前
功能测试--Day07--Python编程基础
开发语言·python
再卷也是菜43 分钟前
C++17(下)
c++
fengci.1 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
alexwang2111 小时前
HDU 4348 详细题解
c++·算法·题解·hdu·主席树·可持久化数据结构·可持久化线段树
程序员zgh1 小时前
C++ 拷贝赋值运算符 详解
c语言·开发语言·c++
念何架构之路1 小时前
restartmanager-重启管理子系统
java·开发语言
SomeB1oody2 小时前
【RustyML入门】2.0. 经典机器学习
开发语言·后端·机器学习·rust·教程
皓月斯语3 小时前
B2132 素数对
c++·算法·题解
0566463 小时前
Python高级——解释器执行原理与虚拟环境工程化实战
开发语言·python
星轨初途4 小时前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode