【问题标题】:Qt: making a layout's children invisible/visibleQt:使布局的子项不可见/可见
【发布时间】:2018-03-16 18:52:23
【问题描述】:

我有一个QHBoxLayout,我想让它的孩子不可见,然后再可见。我尝试了QWidget::findChildren()QObject::children()QLayout::widget() 的各种组合,但这些都不起作用。前 2 个返回空列表,第 2 个返回 NULL。

【问题讨论】:

标签: qt user-interface qt4 show-hide


【解决方案1】:

小部件不是布局的子级:QWidget 只能是 QWidget 的子级,QLayout 不是小部件。您必须改为递归枚举布局的元素。回想一下QLayout 是一个QLayoutItem

void setLayoutVisible(QLayoutItem *item, bool visible) {
  if (auto widget = item->widget())
    return widget->setVisible(visible);
  if (auto layout = item->layout())
    for (int i = 0; i < layout->count(); ++i)
      setLayoutVisible(layout->itemAt(i), visible);
};

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多