更新1
我们的想法是能够从main.qml更改CardForm的正面和背面,因为我希望能够使用多个CardForm实例。我试图做他们所做的事here,但它不起作用。
以下是代码:
CardForm.qml
import QtQuick 2.0
Flipable {
id: sCard
width: 75
height: 200
property bool flipped: false
property string front: "Front"
property string back: "Back"
property alias callFront : front
property alias callBack : back
front: Rectangle{
id: front
anchors.fill: sCard
border.width: 2
border.color: "black"
radius: 5
Text{
anchors.centerIn: parent
text: sCard.front
}
}
back: Column{
Rectangle{
id: back
anchors.fill: sCard
radius: 5
border.width: 2
border.color: "black"
Text{
anchors.centerIn: parent
text: sCard.front
}
Text{
anchors.centerIn: parent
text: sCard.front
}
}
}
transform: Rotation{
id: flip
origin.x: sCard.width
origin.y: sCard.height/2
axis.x: 0; axis.y: 1; axis.z: 0 // set axis.y to 1 to rotate around y-axis
angle: 0 // the default angle
}
states: State {
name: "back"
PropertyChanges {
target: flip
angle: 180
}
when: sCard.flipped
}
transitions: Transition{
NumberAnimation {
target: flip
property: "angle"
duration: 200
}
}
MouseArea{
anchors.fill: parent
onClicked: sCard.flipped = !sCard.flipped
}
}
main.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Neuro Seed")
SwipeView {
id: swipeView
anchors.fill: parent
currentIndex: tabBar.currentIndex
Column {
CardForm{
id: test
anchors.centerIn: parent
test.callFront: "Hello World!"
test.callBack: "Bonjour le Monde!
}
}
}
}
以下是错误消息:
SHGetSpecialFolderPath()标准位置失败"共享配置",clsid = 0x1c。 ()
qrc:/main.qml:17:13:QML CardForm:back是一次写入属性
qrc:/main.qml:17:13:QML CardForm:front是一次性写入属性
qrc:/main.qml:16:9:QML列:无法为Column内的项指定top,bottom,verticalCenter,fill或centerIn锚点。列不起作用。
c1.getFront()和getBack()来自我制作的C ++类。我将这些改为" Hello World!"和#34; Bonjour le Monde!"
答案 0 :(得分:1)
所以经过几个小时的努力,我发现要创建一个可以被其他.qml文件访问的属性,你必须创建一个property alias name: id.property
。 id必须指向代码中对象的现有实例以及您希望能够从外部更改的此实例的属性。所以在我的情况下就是这样:
CardForm.qml
Flipable {
id: sCard
width: 75
height: 200
property bool flipped: false
property alias frontText : front.text
front: Rectangle{
id: front
anchors.fill: sCard
border.width: 2
border.color: "black"
radius: 5
Text{
anchors.centerIn: parent
text: frontText
}
}
}
和main.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Neuro Seed")
Rectangle {
anchors.fill: parent
CardForm{
id: test
anchors.centerIn: parent
frontText: "Hello World!"
}
}
}
}