c++ - 如何销毁布局qt上的小部件

标签 c++ qt

我正在努力创建一个界面,该界面可以动态生成带有布局的 QgroupeBox,我得到了所需的 groupebox 的数量并且它完美地工作。现在我想使用一个按钮来销毁这些 groupBox 以重复执行相同的操作(获取所需的 groupeBox 的数量并创建它们)

这是我为此使用的代码:

void interface::on_pushButton_12_clicked(){
int i,k;
ui->pushButton_13->setEnabled(true);
QGroupBox *first = new QGroupBox(this);
QVBoxLayout *test = new QVBoxLayout;

k = recupEdit();

ui->pushButton_12->hide();
ui->lineEdit->hide();
ui->label->hide();

for(i = 1; i<=k;i++)
   {
    first = creatgroupebox();

    test->addWidget(first);
    test->addStretch(1);
    ui->tab->setLayout(test);
}
}
int interface::recupEdit(){
int k;
QString recup = ui->lineEdit->text();

k = recup.toInt(0,10);
return k;
}
QGroupBox *interface::creatgroupebox()
{
QGroupBox *group = new QGroupBox(this);
QLineEdit *Id = new QLineEdit("Id");
QLineEdit *Data1 = new QLineEdit("Data 1");
QLineEdit *Data2 = new QLineEdit("Data 2");
QLineEdit *Data3 = new QLineEdit("Data 3");
QLineEdit *Data4 = new QLineEdit("Data 4");
QLineEdit *Data5 = new QLineEdit("Data 5");
QLineEdit *Data6 = new QLineEdit("Data 6");
QLineEdit *Data7 = new QLineEdit("Data 7");
QLineEdit *Data8 = new QLineEdit("Data 8");


QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(Id);
layout->addWidget(Data1);
layout->addWidget(Data2);
layout->addWidget(Data3);
layout->addWidget(Data4);
layout->addWidget(Data5);
layout->addWidget(Data6);
layout->addWidget(Data7);
layout->addWidget(Data8);

group->setLayout(layout);



return group;
}
void interface::on_pushButton_13_clicked()
{

ui->pushButton_12->show();
ui->lineEdit->show();
ui->label->show();
}

最佳答案

您可以使用 QObject::children() 获取所有子对象

auto gb = new QGroupBox();
gb->setLayout(new QHBoxLayout());
gb->layout()->addWidget(new QLineEdit());

foreach (QObject *o, gb->layout()->children()) {
    auto le = qobject_cast<QLineEdit*>(o);
    if (!le)
        continue;
    //do what you need with your linedit
}

是你想要的吗?

关于c++ - 如何销毁布局qt上的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30190054/

相关文章:

c++ - 桌面/屏幕视频采集/录像库 "pc not mobile "[c++/Qt]

c++ - Qt在主线程中获取线程ID?

qt - 从 QT 布局中删除 qwidget

c++ - QT 重绘/重绘/更新/做某事

c++ - 获取 UTF-8 编码的 std::string 的实际长度?

c++ - 使用适当的基类指针声明设计接口(interface) - cpp

c++ - 可选参数 const 引用重新分配

c++ - 将任意 lambda 传递给 C++ 中的类方法

c++ - std::cout 会影响计时器吗?

c++ - Qt - 没有托盘图标的通知,可能吗?