lee*_*mes 5 c++ qt window-managers qt4 qt5
我知道如何制作一个QWidget(在Qt4或Qt5中)/ QWindow(从Qt5开始)无边界,绘制一个自定义标题栏并手动实现鼠标拖动,通过简单跟踪鼠标位置mouseMoveEvent并更新窗口来移动屏幕上的窗口位置.
但是,此移动的行为与窗口管理器实现的移动行为不同.例如,在屏幕边框附近移动窗口可以解释为"全屏"或"分屏"; 或Windows与对方的边框对齐,具体取决于系统/窗口管理器.如果您实现上面的窗口移动,这些东西不起作用.
Google Chrome/Chromium只是实现自定义窗口标题栏和边框的应用程序的一个示例,同时仍适应窗口管理器的本机行为.我想知道Chrome是否自己实现这些(并检测窗口管理器及其配置),或者大多数窗口管理器中是否有某些功能(显然,这仍然是高度依赖于平台的),用于告诉"启动本机窗口移动"和"停止原生窗口运动"或类似.
Qt中有类似的东西吗?如果没有,也许使用像Qxt这样的其他库?
仅供参考:我主要针对Windows和Linux,在那里我看到用户可以安装任何窗口管理器的困难.
基于最近对 Qt4 的尝试,我担心答案是,您需要调整这个每个平台/每个窗口管理器。我希望 QWindow 的补丁能够改善该领域的行为,但我不知道有任何标准挂钩可以告诉操作系统/窗口管理器您想要实现的目标。
同样,Qt 不应该“妨碍”解决这个问题,它只是一个无法以通用方式帮助您做任何事情的领域。