gpt4 book ai didi

c++ - Qt 5.3 : Accessing/returning/calling checkboxes that are created dynamically(? )

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:45 25 4
gpt4 key购买 nike

所以我想,一般来说,当涉及到 Qt 和 C++ 时,我已经达到了我的知识上限。我正在基于 QComboBox 的输入在 QScrollArea 中创建复选框。根据 QComboBox 中选择的值,创建特定数量的复选框。创建这些复选框后,我无法理解如何在正在创建和调用的函数之外与它们交互(在我的例子中,只需检查它们是否被选中)。我知道如何如果按钮是静态的,则使用它们,但由于复选框是动态的(这是正确的词吗?)并且可以更改,我不知道该怎么做。下面是关于如何创建复选框的一小段代码。如果我现在想简单地检查是否有任何复选框被选中,我该怎么做。我可以以某种方式“返回”或“调用”另一个函数中创建的复选框吗?我知道我只需要遍历数组并进行检查,我只是不知道如何将复选框数组放入另一个函数或如何在下面的函数中返回它们。

感谢您的帮助!

void MyProgram::create_checkboxes(QString opnum)
{
QWidget* MDAcheckboxes = new QWidget(ui->MDA);
QVBoxLayout* MDAlayout = new QVBoxLayout(MDAcheckboxes);
QCheckBox *MDAmycheckBox[9];
QList<QString> boxes;

if (opnum == "640")
{
boxes << "16-1" << "16-2";

for (int i = 0; i < 2; i++)
{
MDAmycheckBox[i] = new QCheckBox(MDAcheckboxes);
MDAmycheckBox[i]->setText(boxes[i]);
MDAlayout->addWidget(MDAmycheckBox[i]);
}
ui->MDA->setWidget(MDAcheckboxes);
}
else if (opnum == "645")
{
boxes << "13-01"<<"13-2"<<"13-3"<<"13-4"<<"13-5";

for (int i = 0; i < 5; i++)
{
MDAmycheckBox[i] = new QCheckBox(MDAcheckboxes);
MDAmycheckBox[i]->setText(boxes[i]);
MDAlayout->addWidget(MDAmycheckBox[i]);
}
ui->MDA->setWidget(MDAcheckboxes);
}
else if (opnum == "650")
{

boxes << "13-6"<<"13-7"<<"13-8"<<"13-9"<<"13-10"<<"13-11"<<"13-12"<<"13-13"<<"13-14";
for (int i = 0; i < 9; i++)
{
MDAmycheckBox[i] = new QCheckBox(MDAcheckboxes);
MDAmycheckBox[i]->setText(boxes[i]);
MDAlayout->addWidget(MDAmycheckBox[i]);
}
ui->MDA->setWidget(MDAcheckboxes);
}
}

最佳答案

所有的 checkBoxes 都应该有父级。在这种情况下,您将能够使用 findChildren 找到它。如果您确定该应用没有任何其他复选框并且 findChildren 不会返回您不需要的复选框,也可以在没有 groupBox 的情况下完成。

试试这个:

QList<QCheckBox *> allButtons = ui->groupBox->findChildren<QCheckBox *>();
qDebug() <<allButtons.size();
for(int i = 0; i < allButtons.size(); ++i)
{
if(allButtons.at(i)->isChecked())
qDebug() << "Use" << allButtons.at(i)->text()<< i;//or what you need
}

一般情况下:

QList<QCheckBox*> allButtons = parentOfCheckBoxes->findChildren<QCheckBox *>();

此外,findChildren 允许您找到具有特殊 objectName 的 child ,这在某些情况下很有用。请注意,您可以将相同的 objectName 设置为不同的对象。

http://qt-project.org/doc/qt-5/qobject.html#findChildren

关于c++ - Qt 5.3 : Accessing/returning/calling checkboxes that are created dynamically(? ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com