【问题标题】:destroy QHBoxLayout销毁 QHBoxLayout
【发布时间】:2011-06-27 12:01:05
【问题描述】:

你好,这里是我的代码,我在按钮事件处理程序中调用所有这些语句,就像这样

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 click 2 出现在第二个它们变成 4 然后 6 ...... 如何在我的按钮事件处理程序中销毁 QHBoxLayout

谢谢

【问题讨论】:

    标签: c++ linux qt


    【解决方案1】:

    尝试只创建一个布局,每次点击后尝试执行类似这样的布局->removeWidget(...);用于删除 prew 图。

    【讨论】:

    • 这就是我要问的问题,就像我不知道 Qt 函数一样
    【解决方案2】:

    使您的 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);
    

    统一更新: 仅适用于Qt3Support 模式。

    UPD2:

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

    【讨论】:

    • 先生,它说 QLayoutIterator 不是类型名称,尽管我已经包含了 #include"QLayoutIterator" 类
    • 哦,对不起。我从旧的 qt3 代码中粘贴了它。您可以使用 Qt3Support 模块或使用layout->remove(p) 代替迭代。
    • 好的,先生,但问题仍然存在,我应该在哪里写 remove(p)。因为每次点击都会创建新布局,所以我需要删除该布局我猜我应该怎么做
    • 我会避免使用 Qt3 的东西,因为在下一个版本中它会被忽略,所以这意味着它会停止编译。
    • 是的,推荐“qt3 支持层”作为 Qt4 应用程序的解决方案是......讨厌......
    【解决方案3】:

    你应该这样做:

    在你的课堂上:

    
    class analysis{
    
    

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

    public: ... };

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

    hLayout = new QHBoxLayout(this);
    --> 如果你不能把'this'放在构造函数上,因为你的类不限制QWidget,你必须在析构函数中删除hLayout!

    在你的方法void analysis::on_pushButton_clicked()你可以调用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      相关资源
      最近更新 更多