在本文中,我们将深入探讨如何使用Qt框架在Windows 11操作系统上实现一个无边框窗口,并添加类似于系统原生的“最大化”功能,利用Win11的Snap Layout特性。Qt是一个跨平台的C++图形用户界面应用程序开发框架,它为开发者提供了丰富的API和工具,使得构建高效、美观的应用程序变得简单。 让我们了解无边框窗口。在Qt中,我们可以创建一个没有系统标题栏和边框的窗口,这通常通过继承`QMainWindow`或`QWidget`类并重写其行为来实现。无边框窗口可以提供更自定义的外观和交互方式,但同时也需要我们自己实现拖动、缩放等基本操作。 为了创建无边框窗口,我们需要设置窗口的`setWindowFlags()`,例如: ```cpp setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); ``` 这段代码将禁用窗口的边框,同时保留系统菜单和最小化/最大化按钮。 接着,我们要实现窗口的拖动功能。这通常通过处理鼠标移动事件来完成,获取到鼠标的相对位置并更新窗口的位置: ```cpp void MyWidget::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton && m_dragPos != event->pos()) { move(mapToGlobal(event->pos()) - m_dragPos); m_dragPos = event->pos(); } } void MyWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { m_dragPos = event->globalPos() - frameGeometry().topLeft(); } } ``` 对于最大化功能,由于我们已经移除了系统边框,所以不能直接使用`showMaximized()`。我们需要模仿Win11的Snap Layout功能。在Windows 11中,用户可以通过拖动窗口到屏幕边缘或使用快捷键触发Snap Layout,显示一组预设的窗口布局选项。我们可以通过`QWindow::windowStateChanged`信号来监听窗口状态的变化,并在窗口最大化时模拟Snap Layout效果。 我们需要引入Windows API,这通常通过`#include `来完成。然后,我们可以在窗口最大化时调用以下API: ```cpp #include void MyWidget::maximizeButtonClicked() { // 获取当前屏幕的Rect MONITORINFO monitorInfo; monitorInfo.cbSize = sizeof(MONITORINFO); GetMonitorInfo(MonitorFromWindow(handle(), MONITOR_DEFAULTTONEAREST), &monitorInfo); // 设置窗口位置和大小以填充整个屏幕 SetWindowPos(handle(), HWND_TOP, monitorInfo.rcMonitor.left, monitorInfo.rcMonitor.top, monitorInfo.rcMonitor.right - monitorInfo.rcMonitor.left, monitorInfo.rcMonitor.bottom - monitorInfo.rcMonitor.top, SWP_NOZORDER | SWP_NOACTIVATE); } ``` 此外,为了实现悬浮的“最大化”按钮,我们可以自定义一个QGraphicsView或QLabel,包含一个图标,并在其上响应鼠标点击事件。当点击这个按钮时,调用`maximizeButtonClicked()`函数。 在Qt中,实现这样的功能可能需要对Windows API有一定的了解,以及熟练运用Qt的事件处理机制。通过以上步骤,我们就可以在Win11环境下创建一个具有无边框、自定义最大化功能的Qt应用了。这不仅能够提供独特的用户体验,还能够充分利用Win11的新特性。在实际开发中,你还可以根据需要进一步定制窗口的外观和行为,比如添加自定义的拖动样式、调整按钮动画等。
2025-04-11 10:52:12 13KB win11
1
因为项目需要,发现直接从word和excel复制粘贴以后,居然在禅道上表格没有边框了,故查了一下 这里从word,以及excel粘贴复制,都能直接有边框了,同时在编辑器里面新增表格,也能直接显示边框了,不需要右键-->设置显示边框了 我这里是使用在禅道上的,这里就直接给出已经修改的js
2024-09-13 09:23:21 1.08MB js ueditor
1
使用css实现多种特效 全部效果: 1.默认三种主题:确认、取消、警告,适用于以下所有特效 2.流光效果:流光背景、流光边框 3.边框效果:双旋转边框、单旋转边框、呼吸效果边框 4.滑动效果:反光滑动、箭头滑动、中央扩展滑动 5.文字覆盖效果:横向文字覆盖、纵向文字覆盖 6.聚集效果:普通聚集、猫耳朵、熊耳朵等等更多样式 7.波纹效果:只有一套效果,更多自定义效果可以查看博客 自定义内容丰富,所有效果均可自定义颜色、尺寸、动画速度、水面反光等 适用于快速开发,导入文件,引用对于类选择器即可
2024-07-03 09:42:49 497KB
1
1、包含编译好的qwindowkit库; 2、包含可运行exe文件; 3、可编译通过的源码; 4、Windows编译环境: MSVC 2019, 2022 + Qt 5.12 or higher 5、详情参考博客:https://blog.csdn.net/m0_37251750/article/details/136909882
2024-06-23 14:42:00 380KB Qt标题栏
无边框显示阴影控件
2024-05-01 16:40:26 11KB Delphi
1
本人使用 VB 开发的一款音视频播放器,支持XP、Win7、Win8。此播放器功能如下: 1. 复读。两种模式,方便复读,方便学英语 2. 音视频均可。支持Windows Media Player 支持的格式,其它的需要添加解码器 3. 可透明化播放。方便学习编程类视频教程 4. 有书签功能。可记忆视频中要点位置 5. 自动屏蔽歌词文件。使用拖放功能时,可自动屏蔽歌词文件(千千静听不支持) 6. 三种播放模式。 7. 还有更多功能,请下载后尝试
1
React Native Document Scanner 实时文档检测库。 返回捕获图像的URI或base64编码的字符串,使您可以轻松地存储它或随意使用它! 特征 : 实时检测 透视校正和图像裁剪 实时相机滤镜(亮度,饱和度,对比度) 闪 易于使用的base64图像 可以很容易地用插入 两个平台 如果您使用的是本机0.48+,请使用版本> = 1.4.1 $ yarn add https://github.com/Michaelvilleneuve/react-native-document-scanner $ react-native link react-native-do
2024-04-13 14:30:06 83.09MB ios react-native scanner document
1
会声会影用的漂亮的边框素材33款 会声会影软件自带边框很少 精选的 欢迎下载
2024-03-02 14:48:43 239KB 会声会影
1
主要介绍了PhotoShop给图片自动添加边框及EXIF信息的JS脚本,本文给出效果图和实现代码,需要的朋友可以参考下
2024-02-10 01:14:39 77KB PhotoShop EXIF信息 JS脚本
1
2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用!
2024-01-18 15:39:45 470KB delphi
1