【发布时间】:2018-09-06 17:37:45
【问题描述】:
我想使用 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 上已经有两个问题与我的基本相同,都没有实际答案:
Filtering executable files in QFileDialog on Linux
show only directories and executables on Ubuntu using QFileDialog
有人知道怎么做吗?还是 QFileDialog 根本做不到?是否可以完成,或者识别可执行文件通常不是那么简单?
(注意:我使用 Qt 4.8.5,因为我使用与 Qt 5 不兼容的第三方代码,如果这很重要的话。)
(注意:没有将其标记为 C++,因为它也与 Python 相关。)
【问题讨论】:
-
如果你尝试
file_dialog.setFilter(QDir::Executable | QDir::Files);会怎样? -
@vahancho 正如我所写,同样,这根本没有效果。但我会相应地编辑我的问题,因为你的问题更简洁。