QCheckBox->isChecked() 问题

QCheckBox->isChecked() issue

本文关键字:问题 isChecked gt QCheckBox-      更新时间:2023-10-16

当复选框被选中时,以下代码不起作用。无论复选框是否被选中,它都会跳转到"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()) {