固定QT窗口,不可拖拽
时间: 2024-09-11 12:12:34 浏览: 48
Qt 5.11 无边框可拖动 可改变大小窗口
在使用Qt库进行GUI应用程序开发时,如果你想要创建一个固定的、不允许用户拖动移动的窗口,你可以通过设置窗口属性来实现。在`QMainWindow`或`QWidget`的基础上,可以这样做:
1. **设置窗口样式**:首先,你需要创建一个`QMainWindow`实例,并指定`Qt::WindowFlags`来固定窗口。例如,使用`Qt::WindowCloseButtonHint | Qt::FramelessWindowHint`可以隐藏关闭按钮并防止窗口边框被点击改变大小。
```cpp
QMainWindow* mainWindow = new QMainWindow();
mainWindow->setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint |
Qt::WindowCloseButtonHint | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
```
这里`Qt::WindowStaysOnTopHint`用于让窗口始终保持最顶层显示。
2. **禁用拖拽功能**:虽然默认情况下窗口不能被用户直接拖动,但是可以通过重写`mousePressEvent()`方法,阻止事件传递到窗口的拖拽区域:
```cpp
mainWindow->setAttribute(Qt::WA_TranslucentBackground); // 设置透明背景
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
event->ignore(); // 禁止鼠标左键触发拖动
}
QMainWindow::mousePressEvent(event);
}
```
请注意,透明背景需要显式启用`WA_TranslucentBackground`属性。
阅读全文