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界面没有打开,保存出来的就是全黑的图!
显示: