【发布时间】:2016-01-13 16:29:07
【问题描述】:
我正在尝试在 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 文件传递到另一个。如果有人可以解释一种方法来做到这一点或确认不可能像这样传递插槽,那将是一个很大的帮助。
【问题讨论】:
-
我还想提一下,我意识到 Qt 提供了他们自己的按钮模板,但他们并没有涵盖我需要的按钮的所有不同可能性,这就是我制作自己的原因。跨度>
-
看看this。这是通常的方式。