【Qt开发笔记】Qt中关于文件对话框QFileDialog属性option以及对其qss样式修改

1.概述

在Qt中使用QFileDialog中的static函数getOpenFileName和getOpenFileNames函数可以打开文件对话框并返回选中的文件名,但是有时候会考虑到修改QFileDialog的qss样式表去使打开的文件对话框的样式与父界面的样式保持一致,这时候会发现无论是继承QFileDialog并对其设置qss还是在他的父界面中直接对其设置qss样式表都没有效果,这里我们就来解决这个问题。

2.解决

这里我们先写一个Demo,在widget中添加一个pushButton,在pushButton的槽函数中去打开QFileDialog。

QString fileName = QFileDialog::getOpenFileName(this, "select file", ".", "*");

编译后运行Demo,点击pushButton,弹出一个文件对话框。

【Qt开发笔记】Qt中关于文件对话框QFileDialog属性option以及对其qss样式修改_第1张图片

其实这个时候打开的文件对话框可以理解为本地系统的文件对话框,无论对其怎么修改qss样式表都不会有任何的效果。

可以来看一下Qt文档中对getOpenFileName函数的描述。

QString QFileDialog::getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)

其实这里就可以看到最后一个参数Option options = 0,跳转到Option。

【Qt开发笔记】Qt中关于文件对话框QFileDialog属性option以及对其qss样式修改_第2张图片

Option是一个enum变量,其中有一个QFileDialog的属性是QFileDialog::DontUseNativeDialog,不要使用本机文件件对话框,默认情况下该属性是false。

在getOpenFileName函数中最后一个参数传入QFileDialog::DontUseNativeDialog。

QString fileName = QFileDialog::getOpenFileName(this, "select file", ".", "*", 0, QFileDialog::DontUseNativeDialog);

这个时候重新编译运行一下Demo,会发现点击pushButton后打开的文件对话框与之前的不同了。

【Qt开发笔记】Qt中关于文件对话框QFileDialog属性option以及对其qss样式修改_第3张图片

这个时候再在父界面中对QFileDialog设置qss就会有效果了。

QFileDialog {
	background-color:red;
}

例如这里对QFileDialog的背景色设置为红色,看看效果。

【Qt开发笔记】Qt中关于文件对话框QFileDialog属性option以及对其qss样式修改_第4张图片

你可能感兴趣的:(【Qt开发笔记】,Qt,QFileDialog,qss)