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(),然后重新插入了对象!
相关文章:
- 将赋值运算符实现为"destroy + construct"是否合法?
- 为什么 C++17 个 destroy()/destroy_n() 函数向前(而不是向后)运行?
- Qt 错误:错误:调用"QHBoxLayout::addItem(QPushButton*&)"没有匹配函数
- 如果从 QObject 派生的类的构造函数抛出,则将发出 destroy()
- QGridLayout vs QHBoxLayout & QVBoxLayout
- QHBoxLayout 中小部件之间的间距
- boost::shared_ptr destroy callback
- 如何获得QHBoxLayout固定高度
- C++标准::destroy(T*指针)
- 使QHBoxLayout在QWidget的实例中可访问
- C++类的动态加载:为什么需要"destroy"函数?
- QHBoxLayout中QPushButton周围的Qt空间
- std::队列错误?Pop调用了错误的destroy函数
- Qt移除延伸从QHBoxLayout
- QHBoxLayout Spacing
- destroy QHBoxLayout