최신 BlackBerry 10 플랫폼에서 사용자 정의 버튼을 제작하려고합니다.BlackBerry Cascades의 QML 문자열
버튼을 클릭하면 배경 이미지가 변경되고 두 번째 클릭하면 다시 변경됩니다..
버튼 로직은 매우 간단합니다. 버튼을 클릭하면 현재 버튼에있는 이미지 유형을 확인하고 이미지 소스를 변경합니다.
나는 다음과 같습니다 기본 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 클릭 이벤트는 자바 스크립트 기능 clickMe에 연결되어 있습니다. 함수가 실행되고 URL이 콘솔에 올바르게 기록됩니다.
image_pushed.png가 설정되지 않기 때문에 문제는 IF 절입니다. 왜 이것이 문제이며 어떻게이 버튼을 구현할 수 있습니까?
나는이 문제에 대한 만 QML 솔루션 주위를 찾고 있어요 나는이 정보를 발견
- defaultImageSource 속성은 toString() 메소드를 포함하지 유형 QUrl,이다.
- toString() 메서드는 실제로 endsWith 함수가있는 QString을 반환합니다.
- 내 QML 참조 : http://qt-project.org/doc/qt-4.8/qstring.html#endsWith
감사합니다.
QML QString 인스턴스가 JS 문자열로 캐스팅하는 경우 endsWith 방법이 존재하지 않는, 그 이유는 설명 할 수 . 그러나 JS 문자열에는 실제로 substring 및 substr 메서드가 있지만이 경우에는 작동하지 않습니다 (이 문제를 해결하기위한 첫 번째 시도였습니다). – Legoless
언급하는 방법은 소문자로 시작합니다. 또한 그 문제에서'console.log (typeof (source))'의 출력을 확인함으로써 확실히 할 수 있습니다. 'string'이라고 말하면 실제로 JS 문자열입니다. – sebasgo
나는 더 많은 테스트를 거쳤다 고 말해야하는데, 실제로 이것을 당신의 개념과 함께 작동하게 만들었습니다. 고맙습니다, 당신 말이 맞습니다, JS 문자열은 QString이 아니라 사용됩니다. – Legoless