相关疑难解决方法(0)

如何清除父窗口小部件中的所有窗口小部件?

我正在使用构造函数QWidget(QWidget *parent).此父窗口小部件包含许多子窗口小部件.我需要在运行时从父级清除所有子窗口小部件.我怎样才能做到这一点?

qt qwidget

18
推荐指数
5
解决办法
2万
查看次数

关于在Qt 4中删除,删除小部件和布局

(我使用Qt 4.7,Windows 7,64bit).

我创建了一个自定义表.每行都是带有小部件的水平布局.行保存在QList中以便于访问,孩子也是如此.这些行也会添加到父窗口小部件中.

如果我调整父窗口小部件的大小,我会计算新的大小,删除所有内容,然后重新创建它.

我的问题是我不想删除任何小部件.只有当我清理桌子时,我才会这样做.

由于我在QList内部和父布局内部有小部件,如何删除每行中的所有小部件,删除所有布局,然后将它们添加到新布局?

如果我这样做:takeAt(0)为每个布局中的每个元素我有一个QLayoutItem,里面有一个小部件...如何在不删除小部件的情况下删除layoutItem?....如何删除小部件而不删除它,无论是父母还是孩子?因为有很多方法可以删除:removeItem,removeWidget ...在布局中,但不是takeWidget ...只是takeAt(),它给出了一个Qlayoutitem.

我尝试了几种方法,但无论发生什么事,我仍然会看到小部件.

关于这个的问题:

  • 小部件何时被删除?如果我从布局中取出窗口小部件(索引),它是否会被删除一段时间?如果我在另一个列表中有一个指针,它会发生吗?

  • removeAt(index)是否执行widget的delete方法?

layout qt qt4 widget

15
推荐指数
2
解决办法
5万
查看次数

如何删除窗口小部件上已存在的布局?

您必须先删除现有布局管理器(由layout()返回),然后才能使用新布局调用setLayout().

来自http://doc.qt.io/qt-5.9/qwidget.html#setLayout

哪个功能用于删除以前的布局?

qt qt4

12
推荐指数
3
解决办法
2万
查看次数

Qt - 清除QWidget布局中的所有小部件

我有QWidget一个对话框.在程序运行过程中,几个QCheckBox *对象被添加到布局中,如下所示:

QCheckBox *c = new QCheckBox("Checkbox text");
ui->myWidget->layout()->addWidget(c);
Run Code Online (Sandbox Code Playgroud)

这适用于所有复选框.但是,QPushButton我的对话框中也有一个名为"clear"的按钮,当它被按下时应该清除myWidget中的所有内容,使其保持空白状态,就像之前QCheckboxes添加任何内容一样.我一直在网上和文档中寻找,但我找不到这样做的方法.我发现这个问题与我的问题类似,并尝试了这样的解决方案:

void myClass::on_clear_clicked()
{
  while(ui->myWidget->layout()->count() > 0)
  {
    QLayoutItem *item = ui->myWidget->layout()->takeAt(0);
    delete item;
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎没有做任何事情.值得注意的是,我不确定这是否正确地从他的答案中翻译出来; 有点不清楚应该如何实现所给出的功能,所以我做了最好的教育猜测.如果有人知道我可以在上面改变它以使它工作(或者只是一种不同的工作方式),那将非常感激.

c++ qt qwidget

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

qt ×4

qt4 ×2

qwidget ×2

c++ ×1

layout ×1

widget ×1