Я хочу использовать 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 уже есть два вопроса, которые по сути совпадают с моими, оба без реального ответа:
Фильтрация исполняемых файлов в QFileDialog в Linux
показывать только каталоги и исполняемые файлы в Ubuntu, использующие QFileDialog
Кто-нибудь знает, как это можно сделать? Или QFileDialog просто не в состоянии это сделать? Можно ли это сделать вообще или распознавание исполняемых файлов не так просто в целом?
(Примечание: я работаю с Qt 4.8.5, так как использую сторонний код, который несовместим с Qt 5, если это имеет значение.)
(Примечание: не помечал это как C ++, так как это также относится к Python.)