有没有办法在 Qt 中指定子窗口的初始位置?

我有一个在 Linux 和 Windows 上运行的应用程序,看起来 Qt 的默认行为让窗口管理器确定子窗口的位置。

在 Windows 上,它位于家长所在屏幕的中央,这似乎很合理。

在 Linux 上,在 GNOME (metacity) 中,它总是位于左上角,这很烦人。我找不到任何允许我控制窗口放置的 Metacity 窗口管理器首选项,因此我想覆盖该行为。

有帮助吗?

解决方案

Qt 小部件几何

在 show() 之前调用子窗口的 move(x, y) 方法。x 和 y 的默认值为 0,因此它出现在左上角。
您还可以使用父窗口的位置来计算子窗口的相对位置。

其他提示

一般来说,我建议不要强制窗口位置,除非您的应用程序有一些非常特殊的窗口要求。窗口管理器的工作是确定新窗口的放置位置,大多数窗口管理器都做得很好。如果 MetaCity 没有选择一个好的位置,那就是它的问题。

如果您自己进行窗口放置,您可能会得到比糟糕的窗口管理器提供的更好的结果,但您也会错过更高级的窗口管理器中可用的智能窗口放置算法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top