我想使用 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);
但是,此代码会导致显示all files.
我尝试添加一些其他过滤器,但到目前为止没有任何效果。 StackOverflow 上已经有两个问题与我的基本相同,但都没有实际答案:
在 Linux 上的 QFileDialog 中过滤可执行文件 https://stackoverflow.com/questions/10177858/filtering-executable-files-in-qfiledialog-on-linux?rq=1
有人知道如何做到吗?或者 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);
请注意,这将归档only可执行文件。要同时显示文件夹,没有已知的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)