Russian Qt Forum

Qt => Вопросы новичков => Тема начата: kolik151 от Ноябрь 16, 2015, 21:40



Название: Вызвать функцию перед началом работы программы
Отправлено: kolik151 от Ноябрь 16, 2015, 21:40
!приложение на qml
До того как программа начала работать, нужно скопировать файлы из ресурсов на пк, когда скопировано: продолжить работу программы и далее geodatabase по указанному пути уже находит уже скопированный на пк нужный ему файл.
Но как вызвать функцию, до того как appwindow загрузилось?

Цитировать
ApplicationWindow {
    id: appWindow
    //и т.д.
 
   function copylocaldata(){
        resourceFolder.makePath(output_path)
        resourceFolder.copyFile(":/Resources/I.geodatabase", output_path+"I.geodatabase")
   }
 
    FileFolder{
        id:resourceFolder
    }
 
    Geodatabase {
        id:gdb1
        path: output_path+"I.geodatabase"
    }
    //далее программа
}


Название: Re: Вызвать функцию перед началом работы программы
Отправлено: kibsoft от Ноябрь 16, 2015, 22:31
в main.cpp перед загрузкой QML файла
Код:
Здесь ваш код;
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();

Если C++ по каким-то причинам не хотите трогать, тогда
Код:
ApplicationWindow {
    id: appWindow
    //и т.д.
 
   function copylocaldata(){
        resourceFolder.makePath(output_path)
        resourceFolder.copyFile(":/Resources/I.geodatabase", output_path+"I.geodatabase")
   }
 
    FileFolder{
        id:resourceFolder
    }
 
    Geodatabase {
        id:gdb1
    }
   
    Component.onCompleted: {
         copylocaldata();
         gdb1.path = output_path+"I.geodatabase";
         //если output_path это свойство и может изменяться, то можно сделать биндинг
         //gdb1.path = Qt.binding(function() { return output_path+"I.geodatabase"; });
    }

    //далее программа
}


Название: Re: Вызвать функцию перед началом работы программы
Отправлено: kolik151 от Ноябрь 16, 2015, 22:50
kibsoft, спасибо все работает  :)