Вам нужно использовать не
engine.rootObjects().at(0)->setProperty("appCore", qVariantFromValue(appCore));
а пробросить этот AppCore как новый компонент:
//это должно быть до строки
//QQmlApplicationEngine engine;
qmlRegisterType<AppCore>("com.myown.project", 1, 0, "AppCore");
Потом в QML-файле объявляете
import com.myown.project 1.0
и можете использовать элемент AppCore как обычный. так как он прямой потомок от QObject, то он будет невидимым, подобно обычному QtObject. Но теперь вам доступно для биндинга его свойство AppCore:
AppCore
{
id: appCoreId
val1: 100500;
}
Теперь, нужно достать инстанс этого класса обратно в С++. Для этого можно использовать поиск по id:
//создавать придётся именно так:
QQmlEngine engine;
QQmlComponent component(&engine, QUrl(QStringLiteral("qrc:/main.qml")));
QObject *object = component.create();
//получаем созданный на стороне QML истанс класса AppCore
AppCore* appCore = object->findChild<AppCore*>("appCoreId");
Более подробно можно почитать тут:
doc.qt.io/qt-5/qtqml-cppintegration-topic.html