0

选中复选框时,以下代码不起作用。无论复选框是否被选中,它都会跳转到“else”语句。

   void MainWindow::runButtonClicked()

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

这里有什么明显的问题还是其他地方有问题?我是否需要连接插槽才能获得检查状态?

4

2 回答 2

1

问题是您访问 betAllRed 复选框的方式。如果您使用的是设计器,则可以使用 Ui 访问它;

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

如果您使用自己的代码:

QComboBox *betAllRed = new QComboBox(this);

只需使用以下方式访问它:

if(this->betAllRed->isChecked())
于 2012-12-30T09:41:49.767 回答
1

我怀疑你做错了,你实际上有两个betAllRed字段:你已经创建和初始化QCheckBox* MainWindow::betAllRed,然后你在 MainWindow::ui 中还有一个复选框(可能具有相同的名称,如果你在 Designer 中重命名它,否则使用默认值设计师创建的名称)。

如果是这种情况,请删除您自己的betAllRed,然后修复ui->betAllRed用于访问复选框的代码(如果它现在具有默认名称,则可能在 Designer 中重命名该复选框)。

然后是关于您的这一行的编码风格说明:

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

那条线就等于这条线,它会更短更清晰:

if (betAllRed->isChecked()) {
于 2012-12-30T10:26:49.593 回答