2013-07-08 1 views
0

У меня есть некоторые настройки сложности в игре. Потому что только один параметр должен быть активным сразу, например. для опции «Easy»Проверено флажок не должен быть удален.

//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 работы и я не понимаю, почему.

Как альтернатива, я мог бы группировать радиокнопки, но мне хотелось бы разобраться, почему мой код работает.

+1

Чтобы выбрать один из нескольких взаимоисключающих параметров, вы должны использовать переключатели, а не флажки. Неправильное использование флажков путем добавления пользовательского поведения - плохая идея. – bames53

+0

Что должен делать последний фрагмент кода? Если легко проверяется, то установленный легко проверяется? Это не имеет большого смысла. –

+0

вы должны добавить изменения настроек для всех трех в каждой функции. Поэтому, если один из них установлен установленным, другие устанавливаются непроверенными в том же 'if'. Но я также согласен с @ bames53 – RST

ответ

1

Если вы снимете флажок actionEasy ui->actionEasy->isChecked() == false, и поэтому ваш код не установит этот флажок.

+0

Спасибо. Поэтому Qt переключает состояние проверки перед выполнением кода. –

1

Вы должны смотреть here это научит вас, как группировать элементы и сделать только один отмечаемые в то же время

0

Отключить флажок, когда он будет проверен.