2013-07-08 30 views
0

我在遊戲中有一些難度設置。因爲我一次只能激活一個選項,例如選項'簡單'複選框應該是不可檢查的

//Uncheck all other difficulty options 
if(ui->actionMedium->isChecked()) 
{ 
    ui->actionMedium->setChecked(false); 
} 

if(ui->actionHard->isChecked()) 
{ 
    ui->actionHard->setChecked(false); 
} 

現在的問題是,如果我點擊已經選中的複選框,複選框將取消選中。好吧,那是一個複選框的正常行爲,所以我說

//check if its alreay checked 
if(ui->actionEasy->isChecked()) 
{ 
    ui->actionEasy->setChecked(true); 
} 

但這doent工作,我不明白爲什麼。

作爲替代我可以組單選按鈕,但我想unterstand爲什麼我的代碼doent工作。

+1

要選擇幾個互斥選項中的一個,您應該使用單選按鈕而不是複選框。通過添加自定義行爲錯誤地使用複選框是一個壞主意。 – bames53

+0

最後的代碼段應該做什麼?如果容易檢查設置容易檢查?這沒有多大意義。 – 2013-07-08 21:24:00

+0

您應該爲每個函數中的所有三項添加設置更改。因此,如果一個設置爲選中狀態,另一個設置爲在相同的「if」中未選中。但我也同意@ bames53 – RST

回答

1

如果您取消選中複選框actionEasy ui->actionEasy->isChecked() == false並且您的代碼不勾選此複選框。

+0

謝謝。所以Qt在代碼執行之前切換檢查狀態。 –

1

你應該看一看here它會教你如何組的項目,並只有一個可檢查的在

0

禁用複選框一次檢查同時進行。