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

Qt widget and Software Input Panel must both remain on top

本文关键字:顶部 小部 软件 输入 Qt      更新时间:2023-10-16

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

  1. 如果我在对话框上设置Qt::WindowStaysOnTopHint,则只有SIP落后于它
  2. 如果我在SIP上只设置Qt::WindowStaysOnTopHint对话框窗口,现在可以被其他窗口覆盖,那么如果我在对话框SIP上设置Qt::WindowStaysOnTopHint,同样的事情也会发生,显然Qt::WindowStaysOnTopHint只适用于一个小部件

如何确保对话框按此顺序堆叠?使SIP模式化并不是一个真正的选择或好的解决方案。

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

PS请看一下我的后续问题。

看起来问题是MyInputPanel QWidget是用Qt::Tool标志构建的。该标志的目的是确保一个窗口总是出现在任何其他窗口的顶部,而这不是您想要的。

我找到了一个解决方法。我在SIP和主对话框上设置了Qt::WindowStaysOnTopHint,但将SIP移动到主对话框的正下方,这样SIP就不会被它遮挡。