2013-08-20 45 views
0

我正在開發一款黑莓10中的計算器應用程序,爲此我使用開關盒來獲取按鈕ID,但我不知道如何獲取開關盒中的按鈕ID。黑莓10開發開關案例

例如:

switch(?){          
    case button_addition: 

    case button_minus: 

    case button_multiplication: 

    case button_division:          
} 

button_addition在哪裏,button_minusbutton_multiplicationbutton_division是按鈕的ID的。

如何獲得這些按鈕的ID?

回答

0

我建議你看看容納按鈕的容器。在許多窗口系統中,容器都有一個「for each」方法,您可以在其中提供可在每個按鈕上運行的功能。

或者當按下按鈕(或點擊)時,檢查消息。許多窗口消息包含發送消息的窗口小部件的ID。

1

我不知道你是否可以得到這樣的ID,我可以建議你在按鈕中定義自定義屬性,並通過按鈕單擊事件。然後,您可以使用該屬性來識別事件。

像下面

Button{ 
    id: button_Addidtion 
    property var customId: 1 // for addition 
    onClick:{ 
     handleOperation(customId); 
    } 
} 

function handleOperation(id) { 
    switch(id) { 
     case 1://addition 
     break; 
    } 
} 

如果你不想定義自定義屬性,那麼也許你可以使用對象名屬性標識按鈕,我不知道是否可以使用字符串與JS開關。

+0

我不知道您是否可以從QML使用它,但在C++中,所有的Qt插槽,你可以叫''的QObject ::發件人()'',這將返回一個指向QObject的指針,它們觸發了觸發該槽的信號。所以你可以把它比作你想要的一切... –

+0

嗨,thanx to all .. 程序正在運行。 –

0

在QML中很容易,您可以創建一個JS函數,該函數將單擊的按鈕ID作爲輸入參數,並根據該參數執行切換案例。你需要調用這個JS函數,並在按鈕點擊的信號上傳遞按鈕ID。

function handleMultiButton(buttonID) { 
    switch(buttonID) { 
     case "button_Addidtion": //Do Something 
     break; 
     case "button_division": //Do Something 
     break; 
    } 
} 

Button{ 
    id: button_Addidtion 
    onClick:{ 
     handleMultiButton("button_Addidtion"); 
    } 
} 

Button{ 
    id: button_division 
    onClick:{ 
     handleMultiButton("button_division"); 
    } 
} 

+0

不在qml中,我想在cpp中,nyways程序正在運行.. –