我正在尝试在Qt中做一些事情,我不确定这是可能的。我似乎无法找到任何关于它的文档,或者其他任何尝试在线进行的文档,但我不想放弃,除非有人能够确认它是不可能的。
我正在做的是创建一个QML模板,该模板将用于我的应用程序中的每个按钮。 QML项具有多个属性和属性别名,这些属性和属性别名在另一个QML文件使用模板时传入,用于定义按钮的工作方式。我想要做的是在按下按钮时将一个插槽传入模板。
以下是模板的简单示例及其工作原理:
Item {
property variant onClickedAction
property alias buttonImageSource: buttonImage.source
Image {
id: buttonImage
MouseArea {
anchors.fill: parent
onClicked: onClickedAction()
}
}
}
以下是另一个QML文件如何使用该按钮模板(名为ExampleButtonTemplate.qml)的示例:
ExampleButtonTemplate {
onClickedAction: ExampleSlot()
buttonImageSource: "ExampleImage.png"
}
然而,当我以这种方式尝试时,它只是在加载使用模板的页面时调用插槽,而不是在按下按钮时。必须有一些方法可以通过属性传递一个我想稍后从一个QML文件调用到另一个QML文件的函数。如果有人可以解释这样做的方法或确认不可能像这样传递插槽,那将是一个很大的帮助。
答案 0 :(得分:0)
更新:我通过这样做得到了它: 替换:
property variant onClickedAction
使用:
property var onClickedAction
并替换:
onClickedAction: ExampleSlot()
使用:
onClickedAction: ExampleSlot
答案 1 :(得分:0)
虽然这肯定是可能的,但为什么不只是&#34;转发&#34;信号并在使用地点处理它?</ p>
基本上只需向最外面的项目添加信号
Item {
id: button
signal clicked()
Image {
MouseArea {
onClicked: button.clicked()
}
}
}
然后你像任何内置信号一样使用它
ExampleButtonTemplate {
onClicked: exampleSlot()
}