我想问一个简单的问题,以便快速解决。我在 main.qml 中有ListView
和Button
,在 closingtaskdelage.qml 中有Component
。这是文件 main.qml :
ListView
{
id: grid
delegate:mydelegate
model: mymodel
spacing: 5
orientation:ListView.Vertical
Layout.preferredWidth: width_commmon
Layout.preferredHeight: height_body
Layout.maximumHeight: 800
Layout.alignment: Qt.AlignHCenter
// highlightFollowsCurrentItem: false
focus: true
ClosingTaskModel
{
id:mymodel
}
ClosingTaskDelegate
{
id:mydelegate
}
}
Button
{
id:finishbutton
Layout.alignment: Qt.AlignHCenter
Layout.preferredWidth: width_commmon
Layout.preferredHeight:height_endbutton
text: "İş Emrini Tamamla"
onClicked:
{
// console.log((grid.children["border1"]).id);
}
}
并提交 ClosingTaskDelegate.qml :
Component
{
id:component1
Rectangle
{
signal sendMenuValuestoJS
height: 200
width: 200
Text
{
id:text1;
text:header;
height:parent.height/2
// width: parent.width
anchors.horizontalCenter:parent.horizontalCenter;
font.pointSize:20;
color:"red";
// height:parent.height/2
// width: parent.width
}
}
}
不关心细节。我的主要问题是:当 main.qml 中出现onClickButton()
时,必须触发信号 sendMenuValuestoJS()
。此信号必须发送字符串值作为参数(即发送文字)。
我无法从 main.qml 访问信号。我在Component
中定义了信号,但我得到了运行时QML错误:
Component objects cannot declare new signals.
如何连接 信号到某些功能?
答案 0 :(得分:2)
如何使用Connections
?
这是一个想法,
/* main.qml */
Rectangle {
width: 200
height: 200
MouseArea {
id: mouse
anchors.fill: parent
}
Click {
id: click
targetto: mouse
}
}
/* Click.qml */
Item {
property variant targetto
Connections {
target: targetto
onClicked: console.log("CLICKED!");
}
}
答案 1 :(得分:0)
Here是来自Signal Handler Attributes章节的官方Qt网站的例子。