麒麟系统 qt 禁止qwidget拖动
时间: 2024-10-08 16:21:33 浏览: 38
在麒麟系统上,如果你想要禁止QWidgets(如QWidget)的拖动功能,你可以通过设置其`setFlags()`方法来禁用鼠标事件的相关标志。通常,拖动操作与`Qt::WA_TranslucentBackground`、`Qt::WA_MouseTracking`以及`Qt::Window`等属性有关。下面是一个例子:
```cpp
#include <QApplication>
#include <QWidget>
class MyWidget : public QWidget {
public:
explicit MyWidget(QWidget *parent = nullptr) :
QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint); // 去掉边框,让窗口透明
setAttribute(Qt::WA_TranslucentBackground, false); // 禁用半透明背景
setMouseTracking(false); // 关闭鼠标跟踪,阻止默认的拖放行为
}
private slots:
void mouseMoveEvent(QMouseEvent *) override { /* 无响应 */ } // 可选,覆盖默认的移动事件处理
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
```
在这个示例中,`MyWidget`继承自`QWidget`,并且设置了窗口不带边框、不透明,并关闭了鼠标跟踪,从而防止了默认的拖动效果。
阅读全文