我想动态添加复选框。我发现一些链接有帮助,但每个链接都有一个我无法解决的问题。
例如在this link我们可以创建&动态添加QCheckBox
es,但我无法从其定义范围(for)中访问它们。
另一种方法是将QListWidgetItem
与setCheckState
一起使用。但它有一个很大的问题!当我点击CheckState
时,它没有注意到它,只关注焦点在它上面的项目!!!! {在这些链接中引入了此问题但没有解决方案:this和this}
有没有办法动态添加Chekbox,我可以从他们的定义范围中访问它们和它们的checkstate?
答案 0 :(得分:1)
您需要保存指向您已创建的复选框的指针。例如,将QVector<QCheckBox> checkBoxes;
添加到窗口小部件,然后将此指针附加到矢量。
结果代码如下所示:
在标题中:
YourWidget : public QWidget {
....
QVector<QCheckBox*> checkboxes;
....
来源:
for (int i = 0; i < 5; i++) {
QCheckBox *box = new QCheckBox;
layout->addWidget(box);
checkboxes.append(box);
}
然后,您可以访问您的复选框:checkboxes[0]->setChecked(true);
或smth
并且不要忘记在窗口小部件的析构函数中释放为checkBoxes分配的内存(如果将它们添加到布局中,则不需要执行此操作)
for (int i = 0; i < checkboxes.size(); i++) {
delete checkboxes[i];
}