【发布时间】:2013-02-04 22:02:54
【问题描述】:
我知道如何使 QWidget(在 Qt4 或 Qt5 中)/QWindow(从 Qt5 开始)无边框,绘制自定义标题栏并手动实现鼠标拖动以通过简单地使用一些 @ 跟踪鼠标位置来移动屏幕上的窗口987654322@ 并更新窗口位置。
但是,这种移动的行为与窗口管理器实现的原生移动不同。例如,将窗口移动到屏幕边框附近可以解释为“全屏”或“分屏”;或窗口捕捉到彼此的边界,具体取决于系统/窗口管理器。如果你像上面那样实现窗口移动,这些东西就不起作用了。
Google Chrome / Chromium 只是实现自定义窗口标题栏和边框的应用程序的一个示例,同时仍适应窗口管理器的本机行为。我想知道 Chrome 是否自行实现这些(并检测窗口管理器及其配置),或者大多数窗口管理器中是否有一些功能(显然,这仍然高度依赖于平台)用于告诉“启动本机窗口移动”和“停止本机窗口移动”或类似内容。
在 Qt 中可以实现类似的功能吗?如果没有,也许使用其他一些库,如 Qxt?
仅供参考:我主要针对 Windows 和 Linux,我发现用户在安装 any 窗口管理器时遇到了困难。
【问题讨论】:
-
@BЈовић(编辑):这不是 Qt5 特定的。标题具有误导性。
-
这个问题是否与您的问题相关(至少在 Windows 中):stackoverflow.com/questions/11979278/…
-
@Roku 非常好,非常感谢。我猜这应该适用于 Windows。所以仍在寻找适用于 Linux 的解决方案。
-
好的,抱歉。我以为我在你的标题中看到了 qt5
-
@BЈовић 是的,但专门针对
QWindow,因为它只是 Qt5 的一部分,与QWidget不同。但由于它具有误导性,我将其删除。
标签: c++ qt qt4 qt5 window-managers