首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QCheckBox->isChecked()问题

QCheckBox->isChecked()问题
EN

Stack Overflow用户
提问于 2012-12-30 16:34:33
回答 2查看 675关注 0票数 0

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

代码语言:javascript
复制
   void MainWindow::runButtonClicked()

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

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

EN

回答 2

Stack Overflow用户

发布于 2012-12-30 17:41:50

问题出在您访问betAllRed复选框的方式。如果你正在使用设计器,你可以使用Ui来访问它;

代码语言:javascript
复制
if(ui->betAllRed->isChecked())

如果您使用的是自己的代码:

代码语言:javascript
复制
QComboBox *betAllRed = new QComboBox(this);

只需使用以下命令访问它:

代码语言:javascript
复制
if(this->betAllRed->isChecked())
票数 1
EN

Stack Overflow用户

发布于 2012-12-30 18:26:50

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

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

然后是关于你的这一行的代码风格说明:

代码语言:javascript
复制
if (MainWindow::betAllRed->isChecked()==true){

这一行就等于这一行,它会更短,更清晰:

代码语言:javascript
复制
if (betAllRed->isChecked()) {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14089389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档