0

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

例如,在此链接中,我们可以动态创建和添加QCheckBoxes,但我无法在其定义范围之外访问它们(for)。

另一种方法是使用QListWidgetItemwith setCheckState。但它有一个很大的问题!当我点击 时CheckState,它没有注意到它,只关注焦点所在的项目!!!!{在这些链接中介绍了这个问题,但没有解决方案:this and this }

有什么方法可以动态添加 Chekboxes 以便我可以在定义范围之外访问它们及其检查状态?

4

1 回答 1

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

并且不要忘记在小部件的析构函数中释放为复选框分配的内存(如果将它们添加到布局中,则不需要这样做)

for (int i = 0; i < checkboxes.size(); i++) {
    delete checkboxes[i];
}
于 2016-01-25T09:28:20.453 回答