QCheckBox- & gt; isChecked () проблема

Следующий код не работает, когда флажок установлен. Независимо от того, установлен флажок или нет, он переходит к оператору «else».

   void MainWindow::runButtonClicked()

{
if (MainWindow::betAllRed->isChecked()==true){
red.didBet=true;
qDebug()<<"bet Red true";
} else{
qDebug()<<"red not checked";
}
}

здесь что-то заметно не так или проблема в другом месте?
Нужно ли подключать слот для проверки состояния?

0

Решение

проблема в том, как вы получаете доступ к флажку betAllRed.
если вы используете дизайнер, вы можете получить к нему доступ через Ui;

if(ui->betAllRed->isChecked())

если вы используете свой собственный код:

QComboBox *betAllRed = new QComboBox(this);

просто получить доступ к нему с помощью:

if(this->betAllRed->isChecked())
1

Другие решения

Я подозреваю, что вы делаете неправильно, у вас на самом деле есть два betAllRed поля: вы создали и инициализировали QCheckBox* MainWindow::betAllRed, а затем у вас также есть флажок в MainWindow :: ui (возможно, с тем же именем, если вы переименовали его в Designer, в противном случае с именем по умолчанию, созданным Designer).

Если это так, удалите свой собственный betAllRed, затем исправьте код для использования ui->betAllRed получить доступ к флажку (и, возможно, переименовать флажок в Designer, если он теперь имеет имя по умолчанию).

А затем заметка о стиле кодирования вашей строки:

if (MainWindow::betAllRed->isChecked()==true){

Эта строка равна только этому, что было бы намного короче и понятнее:

if (betAllRed->isChecked()) {
1

По вопросам рекламы [email protected]