Qt小部件和软件输入面板必须保持在最顶层

时间:2013-07-02 17:40:51

标签: c++ qt

我有一个包含QPlainTextEdit窗口小部件的Qt对话框窗口,我已按照示例here为其创建了一个软件输入面板(SIP)。对话框窗口的功能要求它保持在最顶层。因此,SIP也必须保持在最顶层 - 但覆盖对话框。我发现的问题是:

  1. 如果我在对话框中设置Qt::WindowStaysOnTopHint,则只有SIP落后于它。
  2. 如果我在SIP上设置Qt::WindowStaysOnTopHint只有现在可以被其他窗口遮挡的对话框窗口,如果我在对话框 SIP上设置Qt::WindowStaysOnTopHint,就会发生同样的事情,显然Qt::WindowStaysOnTopHint仅适用于一个小部件。
  3. 可以做些什么来确保对话框按此顺序堆叠?制作SIP模式并不是一个真正的选择或好的解决方案。

    如果重要的话我用C ++进行编码

    PS 请查看我对question的跟进。

2 个答案:

答案 0 :(得分:0)

看起来问题是MyInputPanel QWidget是用Qt :: Tool标志构造的。该标志的目的是确保窗口始终显示在任何其他不是您想要的窗口的顶部。

答案 1 :(得分:0)

我找到了解决方法。我在SIP和主对话框上设置了Qt::WindowStaysOnTopHint,但是在主对话框的正下方移动SIP,以便SIP不会被遮挡。