【问题标题】:The order of arrangement of windows窗户的排列顺序
【发布时间】:2016-12-15 17:22:48
【问题描述】:

对不起我的英语。我需要执行QWidget 的顺序。我有一堆对象QWidget。而且我需要按照它们在堆栈中出现的顺序放置窗口。

例如:

堆栈:window1 -> window2 -> window3

在此示例中,window2 始终关闭 window3,但它反过来又关闭 window1

Qt 中有这样的功能吗?我不限于QWidget。也许您可以以某种方式指定顺序 \ windows 优先级?

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

也许有一些标志。 Qt::WindowStaysOnTopHint 它不适合我,所以小部件\ windows 很多,一个应该涵盖所有内容。并按优先顺序排列。

【问题讨论】:

  • 如果一个窗口没有关闭另一个我会想到模式对话框。
  • @AlexanderVX 我需要同时打开所有窗口。应该仅在窗口的第一优先级上处于活动状态。是否有可能停用 qt 窗口?
  • 也许你可以提供一张图片并重写问题。 “所有窗户同时打开”和/或您在问题中写的其余部分都不清楚。否则,它似乎是一堆模态对话框,其中一个属于另一个 1->2->3。但是如果不更好地理解这个问题,我就无法回答。

标签: c++ qt window qwidget


【解决方案1】:

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

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
    }
    ....
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    相关资源
    最近更新 更多