LayoutMirroring
QML附加属性允许将项目的方向性从左到右切换到从右到左,反之亦然。我想从C ++代码访问项目的当前LayoutMirroring
值,扩展QML应用程序。我理解qmlAttachedPropertiesObject
函数可用于从C ++访问附加属性,如documentation中所述,但我不知道在哪里可以找到代表C ++中这个特定属性的类。
有可能吗?
答案 0 :(得分:2)
从Qt5开始,可以使用QQmlProperty类轻松读写附加属性。
简单main.qml
文件:
import QtQuick 2.0
Rectangle {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
}
简单的C ++代码,用于阅读上述LayoutMirroring.enabled
附加属性:
QQuickView view;
view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
view.show();
QQuickItem* rootItem = view.rootObject();
qDebug() << QQmlProperty::read(rootItem, "LayoutMirroring.enabled", qmlContext(rootItem));
控制台输出:
=> QVariant(bool, true)
答案 1 :(得分:0)
import QtQuick 1.1
Rectangle {
id: parentRect
property alias layoutValue : LayoutMirroring.enabled// ? true : false;// Read Only
LayoutMirroring.enabled: false
LayoutMirroring.childrenInherit: true
width: 300; height: 50
color: "yellow"
border.width: 1
Row {
anchors { left: parent.left; margins: 5 }
y: 5; spacing: 5
Repeater {
model: 5
Rectangle {
color: "red"
opacity: (5 - index) / 5
width: 40; height: 40
Text {
text: index + 1
anchors.centerIn: parent
}
}
}
}
}
#include #include #include #include #include "qmlapplicationviewer.h" Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer app(createApplication(argc, argv)); QScopedPointer viewer(QmlApplicationViewer::create()); viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer->setMainQmlFile(QLatin1String("qml/Test/main.qml")); QDeclarativeProperty propLayout(viewer->rootObject(),"layoutValue"); QDeclarativeProperty propLayoutMargin(viewer->rootObject(),"anchors.leftMargin"); qDebug() showExpanded(); return app->exec(); }