Add functionality to load assets with the Qt Resource System

Use case: Load application QML file and/or vendor QML modules from external binary resources (RCC)
This commit is contained in:
Moritz Maxeiner 2015-12-05 17:33:54 +01:00
parent e02b2b80b3
commit d71da6200b
2 changed files with 39 additions and 0 deletions

View File

@ -29,6 +29,8 @@ DOS_API void dos_qapplication_delete();
// QQmlApplicationEngine
DOS_API void dos_qqmlapplicationengine_create(void** vptr);
DOS_API void dos_qqmlapplicationengine_load(void* vptr, const char* filename);
DOS_API void dos_qqmlapplicationengine_load_url(void* vptr, void* url);
DOS_API void dos_qqmlapplicationengine_add_import_path(void* vptr, const char* path);
DOS_API void dos_qqmlapplicationengine_context(void* vptr, void** context);
DOS_API void dos_qqmlapplicationengine_delete(void* vptr);
@ -136,6 +138,13 @@ DOS_API void dos_qabstractlistmodel_endResetModel(void* vptr);
DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, void* topLeft, void* bottomRight, int* rolesPtr, int rolesLength);
DOS_API void dos_qabstractlistmodel_delete(void* vptr);
// QResource
DOS_API void dos_qresource_register(const char* filename);
// QUrl
DOS_API void dos_qurl_create(void** vptr, const char* url, int parsingMode);
DOS_API void dos_qurl_delete(void* vptr);
#ifdef __cplusplus
}
#endif

View File

@ -11,6 +11,7 @@
#include <QtQml/QQmlApplicationEngine>
#include <QtQuick/QQuickView>
#include <QtWidgets/QApplication>
#include <QResource>
#include "DOtherSide/DynamicQObject.h"
#include "DOtherSide/BaseQAbstractListModel.h"
@ -80,6 +81,19 @@ void dos_qqmlapplicationengine_load(void* vptr, const char* filename)
engine->load(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + QDir::separator() + QString(filename)));
}
void dos_qqmlapplicationengine_load_url(void* vptr, void* url)
{
QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr);
QUrl* qurl = reinterpret_cast<QUrl*>(url);
engine -> load(*qurl);
}
void dos_qqmlapplicationengine_add_import_path(void* vptr, const char* path)
{
QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr);
engine -> addImportPath(QString(path));
}
void dos_qqmlapplicationengine_context(void* vptr, void** context)
{
QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr);
@ -531,3 +545,19 @@ void dos_qhash_int_qbytearray_value(QHashIntQByteArrayVoidPtr vptr, int key, cha
*result = qstrdup(value.data());
}
void dos_qresource_register(const char* filename)
{
QResource::registerResource(QString(filename));
}
void dos_qurl_create(void** vptr, const char* url, int parsingMode)
{
*vptr = new QUrl(QString(url), (QUrl::ParsingMode) parsingMode);
}
void dos_qurl_delete(void* vptr)
{
QUrl* url = reinterpret_cast<QUrl*>(vptr);
delete url;
}