最新のBlackBerry10プラットフォームでカスタムボタンを作成しようとしています。
ボタンは、クリックされたときに背景画像を変更し、2回目にクリックされたときに元に戻す必要があります。
ボタンのロジックは非常に単純です。クリックすると、現在ボタンにある画像の種類を確認し、画像のソースを変更します。
私は次のような基本的な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がコンソールに正しく記録されます。
image_pushed.pngが設定されないため、問題はIF句です。これが問題である理由と、このボタンを実装するにはどうすればよいですか?
私はこの問題の唯一のQMLソリューションを探していて、次の情報を見つけました。
- defaultImageSourceプロパティはタイプQUrlであり、toString()メソッドが含まれています。
- toString()メソッドはQStringを返しますが、これには実際に関数endsWithがあります。
- 私のQMLリファレンス:http://qt-project.org/doc/qt-4.8/qstring.html#endsWith
ありがとう。