有什么方法可以动态添加复选框,以便我可以在定义范围之外访问它们及其检查状态?
Is there any way to add Chekboxes dynamically that I can access them and their checkstate out of their definition scope?
我想动态添加复选框。我找到了一些有用的链接,但每个链接都有一个我无法解决的问题。
例如在 this link 中,我们可以动态创建和添加 QCheckBox
es,但我无法在它们的定义范围之外访问它们 (for)。
另一种方法是使用 QListWidgetItem
和 setCheckState
。但它有一个非常大的问题!当我点击 CheckState
时,它并没有注意到它,只是专注于它所关注的项目!!!! {在这些链接中介绍了这个问题但没有解决方案:this and }
有什么方法可以动态添加 Chekboxes 以便我可以在定义范围之外访问它们及其检查状态?
您需要保存指向您创建的复选框的指针。例如,将 QVector<QCheckBox> checkBoxes;
添加到您的小部件,然后将此指针附加到向量。
结果代码可能如下所示:
在header中:
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];
}
我想动态添加复选框。我找到了一些有用的链接,但每个链接都有一个我无法解决的问题。
例如在 this link 中,我们可以动态创建和添加 QCheckBox
es,但我无法在它们的定义范围之外访问它们 (for)。
另一种方法是使用 QListWidgetItem
和 setCheckState
。但它有一个非常大的问题!当我点击 CheckState
时,它并没有注意到它,只是专注于它所关注的项目!!!! {在这些链接中介绍了这个问题但没有解决方案:this and
有什么方法可以动态添加 Chekboxes 以便我可以在定义范围之外访问它们及其检查状态?
您需要保存指向您创建的复选框的指针。例如,将 QVector<QCheckBox> checkBoxes;
添加到您的小部件,然后将此指针附加到向量。
结果代码可能如下所示:
在header中:
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];
}