Вам не хватает модуля quickwidgets
Qt. Вот почему он не может найти эти символы. Если вы используете qmake, добавьте QT += quickwidgets
в ваш профессиональный файл.
Но это не будет вашей проблемой. QQuickWidgets - это виджеты для отображения некоторого кода QQuick, который будет использоваться в приложении Widgets. Но когда вы используете QQmlApplicationEngine, вы работаете в Quick. Ваш rootObject()
не будет QQuickWidget. Поэтому вместо поиска QQuickWidget обратитесь к rootContext движков - замените:
QQuickWidget *myObject = static_cast<QQuickWidget*>(engine.rootObjects().first());
QQmlContext *context = myObject->rootContext();
context->setContextProperty("ColorSource", pSource);
на
QQmlContext *context = engine.rootContext();
context->setContextProperty("ColorSource", pSource);
. Это сделает ваш код намного менее подверженным ошибкам.
Кроме того, в несвязанной заметке вы всегда должны проверять свои указатели, чтобы убедиться, что ваш static_cast
работает нормально. В противном случае вы получите сбои, если rootObjects движков пуст или первый не является QQuickWidget.