Как создать фиктивный QQuickItem в C++ во время выполнения

Я использую Qt 5.7 и модульное тестирование с использованием gtest или как его называют гуглтестс.

У меня есть функция для проверки, которая принимает QQuickItem, Чтобы проверить это, я хочу создать QQuickItem на лету, когда мой тестовый модуль в бегах. Является ли это возможным?

Обратите внимание, что у меня есть доступ к QQmlApplicationEngine или любые файлы qml, такие как main.qml, Однако я должен быть в состоянии создать dummy.qml в ресурсах моего тестового проекта?
Я также думаю, что делает #include <QQmlApplicationEngine> должен дать мне доступ к QQmlApplicationEngine?

Как мне создать манекен QQuickItem в коде C++ с некоторой допустимой шириной и высотой в моем модульном тесте, и передать его моему методу во время выполнения?

1 ответ

Решение

Самый простой способ изолировать QQuickItem объект для тестирования будет использовать QQuickView:

QQuickView * view = new QQuickView;
view->setSource(QUrl(QStringLiteral("qrc:/dummy.qml")));
QQuickItem * dummyItem = view->rootObject();

Из-за широкого спроса:

// dummy.qml
import QtQuick 2.0

Item {
  width: 200
  height: 200
}
Другие вопросы по тегам