当复选框被选中时,以下代码不起作用。无论复选框是否被选中,它都会跳转到"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(可能有相同的名字,如果你重命名它在设计器,否则与设计师创建的默认名称)。
如果是这种情况,请删除自己的betAllRed
,然后修复代码以使用ui->betAllRed
访问复选框(并且可能在Designer中重命名复选框,如果它现在具有默认名称)。
然后是关于你这一行的编码风格注释:
if (MainWindow::betAllRed->isChecked()==true){
这一行就等于这样,这样更短更清晰:
if (betAllRed->isChecked()) {