Qt:QFileDialog

目录

一、介绍

二、功能

三、具体事例

1、将某个界面保存为图片,后缀名可选PNG、JPEG、SVG等


一、介绍

QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录。

QFileDialog继承了QDialog,具有父类的各种方法。

二、功能

QFileDialog::getOpenFileName()    //获取一个打开文件的文件名
QFileDialog::getOpenFileNames()   //获取多个打开文件的文件名
QFileDialog::getOpenFileUrl()     //获取一个打开文件的统一资源定位符
QFileDialog::getOpenFileUrls()    //获取多个打开文件的统一资源定位符
QFileDialog::getSaveFileName()    //获取保存的文件名
QFileDialog::getSaveFileUrl()     //获取保存的url

三、具体事例

1、将某个界面保存为图片,后缀名可选PNG、JPEG、SVG等

这里界面取名为A。

//获取桌面路径
QString desktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
//默认保存在桌面下,;;划分可选择的文件后缀
QString strPath = QFileDialog::getSaveFileName(this,"download",desktopPath,"Images(*.png);;Images(*.jpeg);;Images(*.svg)");
if(!strPath.isEmpty()){

    /**  法1  **/
    //创建一个`QScreen`类型的指针变量`screen`,并将其指向当前系统的主显示屏的`QScreen`对象。可以使用这个指针来获取和操作主显示屏的相关信息
    QScreen *screen = QGuiApplication::primaryScreen();
    screen->grabWindow(A->winId()).save(strPath);
    
    /**  法2 **/
    //避免了法1中 A界面一定是被打开的界面 这一限制
    QPixmap pix=A->grab(); 获取A的界面
    pix.save(strPath);
}

`A` 是一个指向图形界面组件的指针(可以是QWidget或其子类的实例)

`A->winId()` 获取该组件的窗口ID,这个ID可以用于标识操作系统层面的窗口对象。

`screen->grabWindow()` 是捕获指定窗口ID的图像,返回一个`QPixmap`对象,它包含了捕获的图像数据。

`save(strPath)` 方法是对`QPixmap`对象调用的,它将图像保存到由`strPath`指定的文件路径。保存的格式将基于路径的扩展名。

【注意】如果A界面没有打开,保存出来的就是全黑的图!

 显示:

Qt:QFileDialog_第1张图片

你可能感兴趣的:(qt,开发语言)