【发布时间】:2012-11-21 20:37:25
【问题描述】:
我正在尝试在最新的 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
谢谢。
【问题讨论】:
标签: string qml blackberry-10