destroy QHBoxLayout

destroy QHBoxLayout

本文关键字:QHBoxLayout destroy      更新时间:2023-10-16

你好,这里有一个是我的代码,我正在我的按钮事件处理程序中调用所有这些语句,如

void analysis::on_pushButton_clicked()
{
 myplot * p = new myplot(gao.structpayloadgraph,gao1.structpayloadgraph, gao.structcol-2, "payload");
    myplot * p1 = new myplot(gao.structsessiongraph,gao.structsessiongraph ,gao.structcol-2, "session");

  QHBoxLayout * layout = new QHBoxLayout;
 ui->horizontalLayout_2->addLayout(layout);
 layout->addWidget(p);
 layout->addWidget(p1);
}

myplot是图形绘制类但问题是,每次我点击按钮,都会出现新的图形,而以前的图形仍然存在,就像一个!st点击2出现在第二秒,它们变成4然后变成6。。。。。。如何在我的按钮事件处理程序中销毁QHBoxLayout

感谢

尝试只创建一个布局,每次单击后尝试执行类似于此布局的操作->removeWidget(…);用于删除prew图。

使layout成为on_pushButton_clicked()函数的全局函数。

然后从中删除所有以前的小部件:

    QLayoutItem *item;
    QLayoutIterator it = layout->iterator();
    while((item = it.takeCurrent()) != 0) {
        layout->remove(item->widget());
        delete item->widget();
    }

之后,你可以添加你的小工具:

    layout->addWidget(p);
    layout->addWidget(p1);

UPD:仅适用于Qt3支持模式。

UPD2:

    QLayoutItem *tItem;
    while (tItem = layout->takeAt(0) != 0)
        delete tItem;

您应该执行以下操作:

在你的课堂上:


class analysis{

private: ... QHBoxLayout* hLayouot; ...

public: ... };

在构造函数中,您必须创建对象:

hLayout = new QHBoxLayout(this);
-->如果因为类不是来自QWidget的hinerit而不能将"this"放在构造函数上,则必须删除析构函数内的hLayout!

而在您的方法void analysis::on_pushButton_clicked()中,您可以调用

hLayout->removeWidget()
。。我也遇到过从布局中删除的问题:所以我调用了hLayout->clear(),然后重新插入了对象!