我正在尝试在最新的 BlackBerry 10 平台中构建自定义按钮。
该按钮应在单击时更改背景图像,然后在第二次单击时将其更改回。
按钮逻辑相当简单:单击后,我检查按钮中当前图像的类型并更改图像源。
我从一个基本的 QML 自定义控件开始,它看起来像这样(去掉了标签和其他不重要的东西):
import bb.cascades 1.0
Container
{
id: root
layout: DockLayout
{
}
function clickMe()
{
var source = myImage.defaultImageSource.toString();
console.log(source);
if (source.endsWith("image.png"))
{
myImage.defaultImageSource = "asset:///images/image_pushed.png";
}
else
{
myImage.defaultImageSource = "asset:///images/image.png";
}
}
ImageButton
{
id: myImage
defaultImageSource: "asset:///images/image.png"
}
onCreationCompleted:
{
myImage.clicked.connect(root.clickMe);
}
}
ImageButton 点击事件连接到 JavaScript 函数clickMe。该函数触发并且 URL 被正确记录到控制台。
问题是 IF 子句,因为 image_pushed.png 从未设置。为什么会出现这个问题,我该如何实现这个按钮?
我正在寻找解决此问题的唯一 QML 解决方案,并找到了以下信息:
- defaultImageSource 属性是 QUrl 类型,它包含 toString() 方法。
- toString() 方法返回QString,它确实有函数endsWith。
- 我的 QML 参考:http: //qt-project.org/doc/qt-4.8/qstring.html#endsWith
谢谢。