linux - QFileDialog:是否可以仅过滤可执行文件(在 Linux 下)?
问题描述
我想使用 QFileDialog 让用户选择一个可执行文件。除目录外,该对话框应仅显示实际的可执行文件。
我的 Windows 版本运行良好,只需检查扩展名是否为 exe。但是,在 Linux 中,我无法按照自己的意愿进行操作。
在 C++ 中,我的尝试如下所示:
QString target_dir = ...
QFileDialog file_dialog;
file_dialog.setFilter(QDir::Executable | QDir::Files);
QString file = file_dialog.getOpenFileName(this, tr("Open Exectuable"), target_dir);
但是,此代码会导致显示所有文件。
我尝试添加一些其他过滤器,但到目前为止没有任何效果。StackOverflow 上已经有两个问题与我的基本相同,都没有实际答案:
在 Linux 上的 QFileDialog 中过滤可执行文件
使用 QFileDialog 在 Ubuntu 上仅显示目录和可执行文件
有人知道怎么做吗?还是 QFileDialog 根本做不到?它可以完全完成还是识别可执行文件通常不是那么简单?
(注意:我使用 Qt 4.8.5,因为我使用与 Qt 5 不兼容的第三方代码,如果这很重要的话。)
(注意:没有将其标记为 C++,因为它也与 Python 相关。)
解决方案
如果您使用本机文件对话框,则某些设置无效。
这应该有效:
QFileDialog dlg(this, tr("Select executable"));
dlg.setOption(QFileDialog::DontUseNativeDialog, true);
dlg.setFilter(QDir::Executable | QDir::Files);
请注意,这将仅归档可执行文件。同时显示文件夹没有已知的解决方案。
推荐阅读
- python - 使用 plt.plot 绘制图表时遇到问题
- laravel - Laravel 日志文件权限问题
- wordpress - 如何仅重写 Wordpress 主页 url?
- python - 模板文件中的静态块标签无效
- jquery - 根据下拉选择值显示/隐藏元素
- java - 我们应该在 java 测试文件夹还是主文件夹中编写 testng selenium 代码?
- spring-boot - 使用 Facebook 登录:错误请求。主机和端口的这种组合需要 TLS
- django - 如何使用 kwargs 正确初始化类实例
- angularfire2 - 如何组合成角度的防火板?
- python - “Figure”对象没有“show”属性