Как получить путь к файлу через QFileDialog C++ QT в QML?
Нужно написать программу,которая вызывает из QML диалоговое окно QFileDialog,при этом не используя FileDialog из QtQuick.Dialogs. То есть нужно написать функцию на C++ с диалогом и чтобы её можно было вызвать из запущенного приложения,которое написано на QML.Как это можно сделать?
Ответы (1 шт):
Автор решения: Andrey Sokolov
→ Ссылка
- Нужен класс, который бы инкапсулировал нужный вам функционал, например FileManager, в нем объявляете и определяете слот или Q_INVOKABLE функцию, например, такую:
QString FileManager::selectFile()
{
return fileName = QFileDialog::getSaveFileName(nullptr, tr("Save current project"), lastOpenedDir, tr("Projects (*.prj)"));
}
- Делаете объект этого класса доступным в контексе qml-движка:
FileManager fileManager;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("fileManager", &fileManager);
- Теперь можно вызвать из qml:
var filename = fileManager.selectFile()