窗户的排列顺序

时间:2016-12-15 17:22:48

标签: c++ qt window qwidget

抱歉我的英文。我需要实现QWidget的顺序。我有一堆对象QWidget。我需要按照它们出现在堆栈中的顺序放置窗口。

例如:

堆叠:window1 - > window2 - > window3

从此示例window2始终关闭window3,但它会关闭window1

Qt中有没有这样的功能?我不仅限于QWidget。也许你可以用某种方式指定订单\ windows优先级?

QStackedWidget类提供了一组小部件,其中一次只能看到一个小部件。我需要让所有的小部件都被看到,并且它们按优先顺序相互覆盖。

也许有一些旗帜。 Qt::WindowStaysOnTopHint它不适合我,所以widget \ windows很多,一个应该涵盖一切。一切按优先顺序排列。

1 个答案:

答案 0 :(得分:2)

您可以在窗口的关闭事件中显式关闭子窗口,例如:

class WindowWithChildWindow : public QWidget
{
    Q_OBJECT
public:
    WindowWithChildWindow(QWidget *child)
        : m_child(child)
    { }
    ....
protected:
    void closeEvent(QCloseEvent *e) override
    {
        if (!m_child || m_child->close())
            e->accept(); // close this window
        else // child ignored the close request in its close event
            e->ignore(); // do not close this window
    }
    ....
};