如何在运行时在 C++ 中创建虚拟 QQuickItem
How to create a dummy QQuickItem in C++ at runtime
我正在使用 Qt 5.7
并使用 gtest
或称为 googletests 的单元测试。
我有一个函数可以测试哪个摄入 QQuickItem
。为了对此进行测试,我 想在 运行 中进行单元测试时即时创建一个 QQuickItem
。 可能吗?
请注意,我确实有权访问 QQmlApplicationEngine
或 main.qml
等任何 qml 文件。但是我应该能够在我的测试项目的资源中创建一个 dummy.qml
?
我还认为做 #include <QQmlApplicationEngine>
应该可以让我访问 QQmlApplicationEngine
?
我如何在 C++ 代码中创建虚拟 QQuickItem
并在我的单元测试中使用一些有效的宽度和高度 ,并将其传递给我的方法在运行时间?
使用隔离的 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
}
我正在使用 Qt 5.7
并使用 gtest
或称为 googletests 的单元测试。
我有一个函数可以测试哪个摄入 QQuickItem
。为了对此进行测试,我 想在 运行 中进行单元测试时即时创建一个 QQuickItem
。 可能吗?
请注意,我确实有权访问 QQmlApplicationEngine
或 main.qml
等任何 qml 文件。但是我应该能够在我的测试项目的资源中创建一个 dummy.qml
?
我还认为做 #include <QQmlApplicationEngine>
应该可以让我访问 QQmlApplicationEngine
?
我如何在 C++ 代码中创建虚拟 QQuickItem
并在我的单元测试中使用一些有效的宽度和高度 ,并将其传递给我的方法在运行时间?
使用隔离的 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
}