我有一个功能,他的工作是根据枚举的内容生成一个复选框列表。
void Controller::createCheckBoxes()
{
const QMetaObject &mo = LicenseManager::staticMetaObject;
int index = mo.indexOfEnumerator("Packages");
QMetaEnum metaPackeges = mo.enumerator(index);
for (int i=0; i != metaPackeges.keyCount(); ++i)
{
QString name = (metaPackeges.key(i));
if(!packageCheckBoxes.contains(name))
{
QCheckBox* box = new QCheckBox;
ui->layoutCheckBoxes->addRow(box);
box->setText(name); box->setCheckable(true);
packageCheckBoxes.insert(name, box);
}
}
}
Where" Packages"是包含包的枚举," packageCheckBoxes"是QMap,其中包含其他函数的复选框以对其进行操作,以及" layoutCheckBoxes"是一个Qt表单布局,复选框可视化。
现在,复选框出现在屏幕上看起来正确,我也打算如何打算,以及布局内部。但是,点击它们,或者要求代码对它们做任何事情,会立即导致崩溃,我无法弄清楚原因。 "应用输出"没有给出解释。除了"程序意外完成。"令我惊讶的是,如果没有这个通知我自己想出来了
我在" layoutCheckBoxes"中有复选框。之前,但它们是从Design手动生成的,而且效果很好。我经历这个麻烦的原因是允许通过枚举轻松添加包,各种函数执行生成所需复选框所需的操作并将它们连接到适当的函数。
调用" createCheckboxes"的函数是在同一个源文件中,以及在复选框上操作的其他函数。
我无法控制枚举,它就是它,它是我需要合作的东西。