我是学生程序员,我正在使用Qt构建GUI应用程序。我正在尝试确保检查一些复选框以便继续。这些复选框启用或禁用组框本身,并且是QGroupBox类的一部分。接受的组合可以是其中之一或两者。我遇到的问题是从QGroupBox成员函数QGroupBox :: setChecked(bool)获取布尔值(至少这是我认为的)并使用它来确定是否显示错误消息。我已经尝试了几种方法并参考Qts文档,希望有一个很好的例子。因为我试图使用的QGroupBox是我的ui类的成员,我尝试创建一个新的QGroupBox实例并将其设置为ui的值。然后;使用if语句,找出是否检查这些方框。这是我的代码:
QGroupBox activeParticleInjection = ui->groupBoxParticleInjection;
QGroupBox activeFluidInjection = ui->groupBoxFluidInjection;
if (activeParticleInjection::setChecked(false) && activeFluidInjection(false));
{
QMessageBox noInjectionSelectedError;
noInjectionSelectedError.setText("Error: No injection type selected");
noInjectionSelectedError.exec();
}
else
{
transData.particleInjectionActive = activeParticleInjection::setChecked();
transData.fluidInjectionActive = activeFluidInjection::setChecked();
这不起作用;从我试图将Ui属性传递给QGroupBox的新实例的方式开始。我知道问题是相对一般的问题,但我尝试直接传递ui复选框,这导致更多的问题。我仔细查看了文档,这让我想到了这样做的方式;没有运气。我希望得到一些关于处理QGroupBox的更好方法的反馈。作为一名学生,有时很难看到答案,特别是在处理QT中组合的独特成员时。
在更改之前,我使用此方法来构建此过程;我收到了if参数设置方式的错误。编译错误是:没有匹配函数来调用'QGroupBox :: isChecked(bool)'
if (ui->groupBoxFluidInjection->isChecked(false) && ui->groupBoxParticleInjection->isChecked(false));
{
QMessageBox noInjectionSelectedError;
noInjectionSelectedError.setText("Error: No injection type selected");
noInjectionSelectedError.exec();
}
else
{
transData.particleInjectionActive = ui->groupBoxParticleInjection->isChecked();
transData.fluidInjectionActive = ui->groupBoxFluidInjection->isChecked();
}
答案 0 :(得分:3)
你混合了几件事:
您的代码段已清理:
QGroupBox* activeParticleInjection = ui->groupBoxParticleInjection;
QGroupBox* activeFluidInjection = ui->groupBoxFluidInjection;
if (!activeParticleInjection->isChecked() && !activeFluidInjection->isChecked())
{
QMessageBox::critical(this, tr("Error"), tr("No injection type selected"));
}
else
{
transData.particleInjectionActive = activeParticleInjection->isChecked();
transData.fluidInjectionActive = activeFluidInjection->isChecked();
}
答案 1 :(得分:0)
不确定您在代码中尝试做了什么,但这实际上更容易实现。也不要尝试创建副本(在您的示例中执行)。在这种情况下使用引用或指针!
QGroupBox group("my group box"); // of course this might be a class member, too
group.setCheckable(true);
// do other things...
if(group.isChecked())
{
// do whatever if it's checked
}
else
{
// do stuff if it isn't checked
}
要检查正在检查的多个组(或复选框)中的至少一个:
if(group1.isChecked() || group2.isChecked())