Как да скрия QWidget под неговия родител?

Имам модален 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);
}

Благодаря предварително.


person Robin    schedule 08.10.2010    source източник


Отговори (1)


Дъщерните уиджети винаги се изобразяват върху родителя, така че ще трябва да прекъснете тази връзка, за да постигнете ефекта, който търсите директно. Тогава можете да използвате raise() или lower(), ако и двата диалога имат един и същ родител.

person Arnold Spence    schedule 08.10.2010
comment
Благодаря, не се бях замисляла за повторно родителство. Срещнах проблеми, когато се опитах да върна анимирания дъщерен диалог обратно към родителския диалог в края на времевата линия и в крайна сметка просто създадох нов дъщерен диалог и унищожих дъщерния диалог, който беше използван за анимацията. - person Robin; 08.10.2010