簡體   English   中英

Qt信號/插槽是否可變?

[英]Qt Signals/Slots Changeable?

我一直在用Qt編寫一些基本應用程序,並且發現它的信號和插槽機制非常有幫助。 但是,我希望做些事情,但是我似乎無法弄清楚如何使其工作。

基本上,我希望有一個包含一些文本,圖片,任何內容和一個按鈕塊的屏幕。 當我按下按鈕時,我希望屏幕上的其他內容也相應地更改。 然后我要重復該過程。 我正在考慮的應用程序的工作原理類似於基於文本的基本游戲。

我希望寫這樣的東西:

void someFunction()
{
    //Display some stuff
    if(button1pressed())
    {
        //display some different stuff
        if(button1pressed())
        {
             ...
        }
        if(button2pressed())
        {
            ...
        }
        if(button...pressed())
        {
           ...
        }
    }
    if(button2pressed())
    {
        //display some different stuff
        if(button1pressed())
        {
             ...
        }
        if(button2pressed())
        {
            ...
        }
        if(button...pressed())
        {
           ...
        }
   }
    if(button...pressed())
    {
        //display some different stuff
        if(button1pressed())
        {
             ...
        }
        if(button2pressed())
        {
            ...
        }
        if(button...pressed())
        {
           ...
        }
   }
}

有沒有辦法像這樣嵌套按鈕按下? 還是另一種實現相同想法的方法? 謝謝!

嵌套過多的“ if”語句不是一個好主意。 為了代碼的可讀性,以及將來要更新軟件時使用的代碼。 一開始這總是很簡單,但隨后往往會變得很復雜...您可以使用狀態模式 ,該模式允許您根據所采取的操作來更改對象的行為。 每次調用按鈕都會更改對象的內部狀態,而完成此更改的方式可能取決於當前的內部狀態。 例如:

  • 初始狀態為“ 1”
  • 觸發按鈕“ A”從狀態“ 1”進入狀態“ 2”
  • 觸發按鈕“ A”從狀態“ 2”進入狀態“ 3”
  • 從狀態“ 3”,觸發按鈕“ B”重新初始化為狀態“ 1”

編輯:正如Kuba所說, QStateMachine是一個在此過程中幫助您的類。

另一個想法是存儲按下按鈕的順序。 將每個新聞事件連接到插槽( QSignalMapper可以幫助您),並將訂單存儲在列表中。 然后處理列表並采取相應的措施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM