如何在其父项下隐藏 QWidget?

Posted

技术标签:

【中文标题】如何在其父项下隐藏 QWidget?【英文标题】:How to hide a QWidget under its parent? 【发布时间】:2010-10-08 15:13:44 【问题描述】:

我有一个模态 QDialog,单击按钮会从其下方滑出一个无模态的子 QDialog。我遇到的问题是,孩子在动画期间一直在其父母之上。

我认为我可以在与父级重叠的子级部分上应用蒙版,但感觉好像我错过了一种更明显的方式,即把子级放在父级下方。

我使用的是 Qt 4.5。下面是一些示例代码:

void MainWindow::on_myMenu_triggered()

    parentDlg = new QDialog(this);
    parentDlg->setFixedSize(250, 250);
    parentDlg->setModal(true);
    parentDlg->show();

    childDlg = new QDialog(parentDlg);
    childDlg->setFixedSize(150, 150);
    childDlg->show();
    QTimeLine* timeLine = new QTimeLine(1000, this);
    connect(timeLine, SIGNAL(valueChanged(qreal)), this,  SLOT(childDlgStepChanged(qreal)));
    timeLine->start();  


void MainWindow::childDlgStepChanged(qreal)

    int parentX = parentDlg->frameGeometry().x();
    int parentY = parentDlg->geometry().y();

    // Move the child dialog to the left of its parent.
    childDlg->move(parentX - 150 * step, parentY);

提前致谢。

【问题讨论】:

【参考方案1】:

子小部件总是在父小部件上呈现,因此您必须打破这种关系才能直接实现您正在寻找的效果。然后,如果两个对话框具有相同的父级,则可以使用 raise() 或 lower()。

【讨论】:

谢谢,我没有考虑过重新抚养。当我尝试将动画子对话框重新设置为时间轴末尾的父对话框时遇到问题,最终只是创建了一个新的子对话框并销毁了用于动画的子对话框。

以上是关于如何在其父项下隐藏 QWidget?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 QStackedLayout 中包含隐藏的 QWidget 高度?

在 QToolbar 上隐藏 QWidget?

Qt 中如何隐藏 QMenu

如何更改蓝图菜单项的默认行为?

如何在php中数组的父项下显示子项

如何在特定标签栏项而不是其他项下添加标题