Qt-Nice-Frameless-Window 使用教程
1. 项目介绍
Qt-Nice-Frameless-Window 是一个基于 QMainWindow 的开源项目,旨在为 Qt 应用程序提供无框窗口支持,兼容 Windows 和 OS X 系统。该项目支持 Windows 系统的 Aero Snap 和阴影效果,同时为 OS X 系统提供原生样式,如圆角和阴影等。
2. 项目快速启动
方法一:创建新项目
- 创建一个新的 Qt 子项目,例如
myproject.pro,参考Qt-Nice-Frameless-Window.pro文件。 - 将
framelesswindow和projectinclude文件夹复制到myproject路径下。 - 在
myproject.pro文件中添加SUBDIRS += framelesswindow并运行 qmake。 - 添加一个子项目
myapp.pro到myproject。 - 在
myproject.pro文件中添加myapp.depends = framelesswindow并运行 qmake。 - 在
myapp.pro文件中添加include (../projectinclude/common.pri)并运行 qmake。 - 右键点击
myapp.pro,选择 "添加库",在弹出的对话框中选择 "内部库",并依次点击下一步。 - 步骤 7 完成后,
myapp.pro文件会自动添加一些内容,再次运行 qmake。 - 使用
CFramelessWindow类作为基类代替QMainWindow。
方法二:已有项目集成
- 将
framelesswindow.h、framelesswindow.cpp和framelesswindow.mm文件复制到你的项目路径下。 - 在
myproject.pro文件中添加以下内容,然后运行 qmake。
HEADERS += framelesswindow.h
win32{
SOURCES += framelesswindow.cpp
}
macx{
OBJECTIVE_SOURCES += framelesswindow.mm
LIBS += -framework Cocoa
}
- 使用
CFramelessWindow类作为基类代替QMainWindow。
3. 应用案例和最佳实践
Windows 系统
- 默认情况下,窗口没有标题栏,因此无法通过鼠标移动窗口。要使窗口可移动,需要在主窗口构造函数中调用
setTitleBar(QWidget* titlebar)方法,其中 "titlebar" 应该是主窗口的子窗口。 - 可以通过
setResizeableAreaWidth(int width = 5)方法设置不可见边框区域的宽度,在此区域内,窗口可以通过鼠标调整大小。 - 通过
setResizeable(bool resizeable)方法可以设置窗口是否可通过鼠标调整大小。
OS X 系统
- 默认情况下,整个窗口是可拖动的。通过
setDraggableAreaHeight(int height)方法可以设置拖动区域的高度。 - 原生样式(三个系统按钮、圆角、阴影)仅在 OS X 10.10 及更高版本上有效。
4. 典型生态项目
Qt-Nice-Frameless-Window 可以作为无框窗口解决方案,被集成到多种类型的应用程序中,特别是在需要自定义窗口样式和交互的图形界面应用程序中。例如,媒体播放器、即时通讯软件、游戏平台等,都可以利用这个项目来实现更加美观和个性化的用户界面。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



