Qml 如何在BlackBerry 10 Cascades中创建图像按钮?

Qml 如何在BlackBerry 10 Cascades中创建图像按钮?,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,我需要在Cascades Qml中创建自定义UI元素,如按钮和列表,并带有图像背景,但是似乎没有一种方法可以设置按钮等控件的背景 我在任何地方都找不到这样的例子 使用容器并创建自定义控件似乎可以做到这一点,但我看不到让该容器具有onClick事件的方法。您可以使用MouseArea元素: Item { Image { anchors.fill: parent source: "yourimg.png" } MouseArea { anchors.fill: p

我需要在Cascades Qml中创建自定义UI元素,如按钮和列表,并带有图像背景,但是似乎没有一种方法可以设置按钮等控件的背景

我在任何地方都找不到这样的例子


使用容器并创建自定义控件似乎可以做到这一点,但我看不到让该容器具有onClick事件的方法。

您可以使用MouseArea元素:

Item {
  Image {
    anchors.fill: parent
    source: "yourimg.png"
  }
  MouseArea {
    anchors.fill: parent
    onClicked: {
      console.log("do your action here!")
    }
  }
}
如果将此代码放在单独的QML文件中,例如CustomButton.QML。您可以在其他QML文件中使用它,如自定义按钮元素:

CustomButton {
}

您可以阅读更多信息。

在BB10中,自定义控件实际上非常简单。下面是一个您尝试执行的示例:

Container {
    property alias text: label.text
    property alias image: imagev.imageSource
    ImageView {
        id: imagev
        imageSource: "asset:///images/Button1.png"
    }        
    Label {
        id: label
        text: "demo"            
    }

    gestureHandlers: [
        TapHandler {
             onTapped: {
                 //do tapped code
             }                
        },
        LongPressHandler {
            onLongPressed: {
                //do long press code
            }            
        }        

    ]
}
将其另存为“CustomButton.qml”,然后在主qml文件中,您可以这样访问它:

Page {
    CustomButton {
        text: "my text"
        image: "images/myimage.png"
    }
}

看起来并不是真的支持控件的定制。难道他们不想让人们做自定义控件吗?作为级联的一部分的控件只允许有限数量的自定义。例如,按钮允许您在需要时向其添加图像。请查看的文档。如果需要更多自定义,可以创建自己的控件。我已经更新了答案,展示了如何创建自定义控件。您也可以在级联中创建自定义组件。有一个例子。从我所看到的情况来看,它和QtQuick的方式是一样的。我想@onion是在谈论你的代码<例如,代码>项目是QtQuick特有的。