Как получить путь к файлу через QFileDialog C++ QT в QML?

Рейтинг: 0Ответов: 1Опубликовано: 16.01.2023

Нужно написать программу,которая вызывает из QML диалоговое окно QFileDialog,при этом не используя FileDialog из QtQuick.Dialogs. То есть нужно написать функцию на C++ с диалогом и чтобы её можно было вызвать из запущенного приложения,которое написано на QML.Как это можно сделать?

Ответы

▲ 0
  1. Нужен класс, который бы инкапсулировал нужный вам функционал, например FileManager, в нем объявляете и определяете слот или Q_INVOKABLE функцию, например, такую:
QString FileManager::selectFile()
{
return fileName = QFileDialog::getSaveFileName(nullptr, tr("Save current  project"), lastOpenedDir, tr("Projects (*.prj)"));
}
  1. Делаете объект этого класса доступным в контексе qml-движка:
FileManager fileManager;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("fileManager", &fileManager);
  1. Теперь можно вызвать из qml:
var filename = fileManager.selectFile()