从C++访问现有的 QML 组件
Access to existing QML component from C++
我是QML的新手,无法解决一个简单的问题。我想从C++访问 QML 组件,但我不能。指针test
始终为 0。可能是什么原因?
代码如下:
主.cpp
int main(int argc, char *argv[])
{
QGuiApplication &app=reg6::Bonder::BonderGuiApplication::instance();
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QObject* test=engine.rootObjects().first()->findChild<QObject*> ("cameraArea");
test->setProperty("color","black");
return app.exec();
}
主.qml
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 1800
height: 900
SplitView
{
anchors.fill: parent
orientation: Qt.Vertical
SplitView {
Layout.fillHeight: true
SplitView {
orientation: Qt.Vertical
width:400
Layout.minimumWidth: 400
Layout.maximumWidth: 500
Camera {
id: cameraArea
height: 400
Layout.maximumHeight: 400
Layout.minimumHeight: 300
}
List {
id: listArea
}
}
Bonder {
id: mainArea
Layout.fillWidth: true
}
Properties {
id: propertiesArea
Layout.minimumWidth: 300
Layout.maximumWidth: 400
}
}
Error {
id: errorArea
Layout.minimumHeight: 100
height: 200
}
}
}
相机.qml
import QtQuick 2.5
Rectangle {
color: "lightblue"
}
您还必须设置 QML 组件的 objectName
属性才能获得指向QObject
的有效指针,因为T QObject::findChild(const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
需要objectName
而不是 ID
相关文章:
- 基于 QML 模型的组件在 android 上具有未定义的 modelData
- 是否可以从C++创建 Qml 组件?
- 如何在 QML 组件中使用 C++ 类
- QML 如何捕获组件转换更改
- Qml:从文件加载组件时将参数作为 URL 的一部分传递
- QML组件与信号连接
- 从C++访问现有的 QML 组件
- 如何将本机窗口嵌入到 QML 组件中
- QML:如何将动态创建的组件与自定义的内部对象一起使用
- 如何在 QML 中实例化C++组件 - WITH 参数化构造函数
- QtQuick:QQmlApplicationEngine无法加载组件qrc:/main.qml:23附加对象分配无效
- qml桌面组件扩展
- QML 从C++在加载器中动态插入组件
- 如何使用 qml 组件(不带 C++)创建插件的 deb 包
- QML:如何在不实际移动任何可见组件的情况下,在鼠标Aeria顶部获取鼠标移动的方向
- 无法更改从C++动态创建的 QML 组件的属性
- 设计Qml桌面组件的样式
- 从c++中与Repeater中委托的QML组件进行交互
- QML组件'Video'无法播放Qt资源文件中的视频文件
- 如何模拟QML组件