如何验证Qt中是否选中了复选框?

use*_*248 1 c++ checkbox qt qt5

以下代码应该将nameLine表单文本设置this box is uncheckedQCheckBox实例checkbox具有状态Unchecked.

这是我的复选框实例声明:

QCheckBox *checkbox = new QCheckBox("paid with cash!", this);
checkbox->setCheckState(Qt::Unchecked);
Run Code Online (Sandbox Code Playgroud)

这是迄今为止的逻辑:

if(checkbox->checkState(Qt::Unchecked))
{
    nameLine->setText("the box is unchecked");
}
Run Code Online (Sandbox Code Playgroud)

此代码无法编译.产生的错误如下:

C:\Qt\5.1.1\mingw48_32\examples\widgets\tutorials\addressbook\part1\voruskra.cpp:144: error: no matching function for call to 'QCheckBox::checkState(Qt::CheckState)'
    if(checkbox->checkState(Qt::Unchecked))
                                         ^
Run Code Online (Sandbox Code Playgroud)

你能告诉我我做错了什么吗?

dte*_*ech 9

除非您使用三态复选框,否则您可以简单地使用 if (checkbox->isChecked())

这个属性是继承的方式QAbstractButton.如果是三态复选框,则必须checkState()按照其他答案中的建议使用.


sty*_*ane 6

我认为checkState不会有任何争论.尝试if(checkbox->checkState() == Qt::Unchecked)