QT 保存对话框,新建QFileDialog方式

QT在学习的过程中总是遇到各种问题,没有人解答,只有自己在研究并且在网上搜索一些资料,从初学到现在入门,一直都是这样走过来的,虽然走得很艰难,但是每一个阶段都会有所收获,最近在做一个图片浏览模块的功能,需要实现一个图片修改以后把图片另存为的功能,刚开始觉得挺麻烦,查找资料的时候也觉得很繁琐,很多资料都不是很详细,花费了我两天的时间我才将这个功能给实现了,到最后发现这个功能实现实际很简单,知识自己不了解QFileDialog控件和它的用法,导致白白浪费了这么多时间,不过也在这个过程中对QFileDialog控件有了具体的了解。废话不多说了,下面是一个具体的代码,希望对一些学习Qt的朋友有所帮助。

    QFileDialog *fileDialog = new QFileDialog(this);//创建一个QFileDialog对象,构造函数中的参数可以有所添加。
    fileDialog->setWindowTitle(tr("Save As"));//设置文件保存对话框的标题
    fileDialog->setAcceptMode(QFileDialog::AcceptSave);//设置文件对话框为保存模式
    fileDialog->setFileMode(QFileDialog::AnyFile);//设置文件对话框弹出的时候显示任何文件,不论是文件夹还是文件
    fileDialog->setViewMode(QFileDialog::Detail);//文件以详细的形式显示,显示文件名,大小,创建日期等信息;

                                                                      //还有另一种形式QFileDialog::List,这个只是把文件的文件名以列表的形式显示出来
    fileDialog->setGeometry(10,30,300,200);//设置文件对话框的显示位置
    fileDialog->setDirectory(".");//设置文件对话框打开时初始打开的位置
    fileDialog->setFilter(tr("Image Files(*.jpg *.png)"));//设置文件类型过滤器
    if(fileDialog->exec() == QDialog::Accepted) {//注意使用的是QFileDialog::Accepted或者QDialog::Accepted,不是QFileDialog::Accept
        QString path = fileDialog->selectedFiles()[0];//得到用户选择的文件名
        filePath=listWidget_File->item(listWidget_File->currentRow())->text();//这个是得到在ListWidget中点击查看的图片,得到这个图片的名字
        filePath=QString("/media/sd/PICTURES")+filePath;//将路径和文件名连接起来
        QImage iim(filePath);//创建一个图片对象,存储源图片
        QPainter painter(&iim);//设置绘画设备
        QFile file(path);//创建一个文件对象,存储用户选择的文件
        if (!file.open(QIODevice::ReadWrite)){以只读的方式打开用户选择的文件,如果失败则返回
            return;
        }

//以流方式写入文件
        QByteArray ba;
        QBuffer buffer(&ba);
        buffer.open(QIODevice::WriteOnly);
        iim.save(&buffer, "JPG");//把图片以流方式写入文件缓存流中
        file.write(ba);//将流中的图片写入文件对象当中

如果不当指出,可以指出,共同进步。

Qt 6.9 中,使用内置的新建文件对话框通常依赖于 `QFileDialog` 类。该类提供了用于选择文件或目录的标准对话框,同时也支持新建文件的操作。以下是一个基本的示例,展示如何在 Qt 6.9 中打开一个内置的新建文件对话框。 ### 使用 `QFileDialog` 新建文件对话框 可以通过调用 `QFileDialog::getSaveFileName()` 方法来创建一个用于保存新文件的对话框。该方法会返回用户输入的文件路径,如果用户取消对话框,则返回一个空字符串。 #### 示例代码: ```cpp #include <QFileDialog> #include <QDebug> void showCreateFileDialog() { QString filePath = QFileDialog::getSaveFileName(nullptr, "新建文件", "", "所有文件(*.*)"); if (!filePath.isEmpty()) { qDebug() << "用户选择的文件路径:" << filePath; } else { qDebug() << "用户取消了操作"; } } ``` ### 说明 - `nullptr` 表示对话框没有父窗口。 - `"新建文件"` 是对话框的标题。 - 第三个参数是初始路径,空字符串表示使用当前目录。 - `"所有文件(*.*)"` 是文件过滤器,可以指定特定的文件类型(例如 `"文本文件 (*.txt)"`)。 - `getSaveFileName()` 返回用户输入的文件名,如果用户取消对话框,则返回空字符串[^1]。 ### 自定义对话框行为 如果需要更复杂的文件对话框行为(例如添加额外的控件或修改对话框布局),可以通过继承 `QFileDialog` 并重写相关方法来实现。此外,也可以通过 Qt 样式表(QSS)来自定义对话框的外观[^1]。 #### 示例:使用 QSS 自定义对话框样式 ```cpp QFileDialog fileDialog; fileDialog.setStyleSheet("QFileDialog { background-color: #f0f0f0; }" "QPushButton { color: blue; }"); fileDialog.exec(); ``` 这种方法可以用于调整对话框的颜色、字体、按钮样式等。 ### 相关问题 1. 如何在 Qt 6.9 中自定义文件对话框的按钮文本? 2. 如何限制 `QFileDialog` 只能选择特定类型的文件? 3. 如何在 `QFileDialog` 中设置默认文件扩展名? 4. 如何在 Qt 中使用 `QDialog` 创建自定义文件对话框? 5. 如何在 Qt 6.9 中通过信号和槽机制处理文件对话框的确认操作?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值