Qt无边框窗口调整大小
时间: 2024-12-29 18:28:24 浏览: 14
Qt框架中的无边框窗口(No-Title-Bar Window)通常是指一种没有标题栏、最小化和最大化按钮的窗口样式,它提供了一种更简洁的界面设计。在Qt中,你可以通过设置窗口样式以及管理窗口的几何信息来创建这样的效果。以下是步骤:
1. **创建窗口**:
使用`QMainWindow`或者自定义窗口类,并指定窗口类型为无边框:
```cpp
QWidget *centralWidget = new QWidget(this);
QMainWindow *mainWindow = new QMainWindow(centralWidget);
mainWindow->setWindowFlags(Qt::FramelessWindowHint); // 设置窗口无边框
```
2. **处理鼠标事件**:
因为无边框窗口无法直接响应标题栏区域的鼠标操作(如关闭、移动等),你需要手动添加鼠标按下、拖动等事件处理器来实现窗口大小调整:
```cpp
QCursor cursor(Qt::SizeAllCursor); // 指定一个允许缩放的光标
mainWindow->setMouseTracking(true); // 启用鼠标追踪
connect(mainWindow, &QMainWindow::mouseMoveEvent, [this, window = mainWindow](QMouseEvent *event) {
if (event->button() == Qt::LeftButton) {
// 根据鼠标位置更新窗口大小
QSize newSize = window->geometry().size() + event->pos().toPoint();
window->resize(newSize);
}
});
```
3. **处理窗口关闭**:
由于没有传统的关闭按钮,可以添加一个关闭图标或监听键盘快捷键来关闭窗口:
```cpp
QAction *closeAction = new QAction(QIcon(":/close.png"), "Close", this);
closeAction->setShortcut(QKeySequence::Close);
connect(closeAction, &QAction::triggered, mainWindow, &QMainWindow::close);
```
阅读全文