有没有办法动态添加Chekboxes我可以访问它们和他们的checkstate超出他们的定义范围?

时间:2016-01-25 09:09:20

标签: qt checkbox dynamic qcheckbox

我想动态添加复选框。我发现一些链接有帮助,但每个链接都有一个我无法解决的问题。

例如在this link我们可以创建&动态添加QCheckBox es,但我无法从其定义范围(for)中访问它们。

另一种方法是将QListWidgetItemsetCheckState一起使用。但它有一个很大的问题!当我点击CheckState时,它没有注意到它,只关注焦点在它上面的项目!!!! {在这些链接中引入了此问题但没有解决方案:thisthis}

有没有办法动态添加Chekbox,我可以从他们的定义范围中访问它们和它们的checkstate?

1 个答案:

答案 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];
}