QWidget/QWindow标题栏:自定义外观,原生感觉(类似Chrome)
QWidget / QWindow title bar: custom look, native feel (similar to Chrome)
我知道如何使QWidget(在Qt4或Qt5中)/QWindow(自Qt5以来)无边框,绘制自定义标题栏,并手动实现鼠标拖动,只需使用一些mouseMoveEvent
跟踪鼠标位置并更新窗口位置即可在屏幕上移动窗口。
但是,此移动的行为与窗口管理器实现的本机移动不同。例如,将窗口移动到屏幕边界附近可以被解释为"全屏"或"分屏";或者窗口捕捉到彼此的边界,这取决于系统/窗口管理器。如果你像上面那样实现窗口移动,这些东西就不起作用了。
Google Chrome/Chromium只是应用程序的一个例子,它实现了自定义窗口标题栏和边框,同时仍然适应窗口管理器的本地行为。我想知道Chrome是否自己实现了这些功能(并检测窗口管理器及其配置),或者大多数窗口管理器中是否有一些功能(显然,这仍然高度依赖于平台)可以告诉"启动本机窗口移动"answers"停止本机窗口移动"或类似的功能。
Qt中可能有这样的东西吗?如果没有,也许可以使用Qxt等其他库?
仅供参考:我主要针对Windows和Linux,在那里我看到了用户安装任何窗口管理器的困难。
基于最近对Qt4的尝试,我担心答案是,您需要根据每个平台/每个窗口管理器来调整它。我希望QWindow的补丁可以改善这一领域的行为,但我不知道有什么标准挂钩可以告诉操作系统/窗口管理器你正在努力实现什么。
同样,Qt不应该"妨碍"解决这个问题,它只是一个无法以通用方式帮助你的领域。
相关文章:
- Android Studio 中带有静态库的原生C++代码
- 如何在 Android Studio 4 中编译 C/C++ 原生代码
- Android Studio:如何在build.gradle中定义自定义宏(针对不同的构建变体),并让原生C / C++
- 在Android原生C++中使用Facemark opencv contrib
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- Android NDK - C++ 异常会导致第三方原生库崩溃
- 如何在 gradle 原生项目中包含二进制库?
- 使用 Flutter 从 Android 上的原生编译共享库中调用函数
- exteranl原生构建问题,构建命令失败,android工作室
- build命令失败,外部原生问题android工作室
- 如何在electrolon项目中集成qt原生窗口
- Lua :在原生lua中编译,但在使用LuaJIT和sol2时C++出错
- 如何将.cpp C++原生库导入 Android Studio
- 原生 WebRTC 丢帧
- 如何使用 JNI 创建原生类?
- 如何为原生UI工具包扩展Ranorex?
- 如何从反应原生代码调用 C 函数?
- 安卓设备上的原生C++ WiFi P2P 网络是否可行?
- CreateSimpleReBar in WTL vista/7 原生外观和感觉
- QWidget/QWindow标题栏:自定义外观,原生感觉(类似Chrome)