Следующий код не работает, когда флажок установлен. Независимо от того, установлен флажок или нет, он переходит к оператору «else».
void MainWindow::runButtonClicked()
{
if (MainWindow::betAllRed->isChecked()==true){
red.didBet=true;
qDebug()<<"bet Red true";
} else{
qDebug()<<"red not checked";
}
}
здесь что-то заметно не так или проблема в другом месте?
Нужно ли подключать слот для проверки состояния?
проблема в том, как вы получаете доступ к флажку betAllRed.
если вы используете дизайнер, вы можете получить к нему доступ через Ui;
if(ui->betAllRed->isChecked())
если вы используете свой собственный код:
QComboBox *betAllRed = new QComboBox(this);
просто получить доступ к нему с помощью:
if(this->betAllRed->isChecked())
Я подозреваю, что вы делаете неправильно, у вас на самом деле есть два betAllRed
поля: вы создали и инициализировали QCheckBox* MainWindow::betAllRed
, а затем у вас также есть флажок в MainWindow :: ui (возможно, с тем же именем, если вы переименовали его в Designer, в противном случае с именем по умолчанию, созданным Designer).
Если это так, удалите свой собственный betAllRed
, затем исправьте код для использования ui->betAllRed
получить доступ к флажку (и, возможно, переименовать флажок в Designer, если он теперь имеет имя по умолчанию).
А затем заметка о стиле кодирования вашей строки:
if (MainWindow::betAllRed->isChecked()==true){
Эта строка равна только этому, что было бы намного короче и понятнее:
if (betAllRed->isChecked()) {