c++ qt 重写nativeEvent禁止标题栏移动
时间: 2023-08-01 16:10:10 浏览: 175
如果您希望完全禁止标题栏移动,而不是将其交给系统处理,可以在重写的`nativeEvent`函数中直接返回`true`。这样,即使鼠标点击在标题栏上,也不会触发窗口的移动。
下面是修改后的示例代码:
```cpp
#include <QtWidgets>
class CustomWidget : public QWidget
{
public:
CustomWidget(QWidget *parent = nullptr) : QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
}
protected:
bool nativeEvent(const QByteArray &eventType, void *message, long *result) override
{
Q_UNUSED(eventType);
Q_UNUSED(message);
*result = 0; // 设定result为0以阻止窗口移动
return true;
}
};
```
在上面的示例中,我们在重写的`nativeEvent`函数中直接将`result`设定为0,并返回`true`,以阻止窗口的移动。
请注意,这种方式会完全禁止窗口的移动,包括拖动边框和拖动标题栏等操作。如果您只想禁止标题栏移动,但保留其他边框拖动的功能,那么可以使用上一个示例中的代码,在判断鼠标位置在标题栏范围内时返回`true`,其他位置返回`false`。这样,只有鼠标点击在标题栏上时,窗口才不会移动。
希望对您有帮助!如果还有其他问题,请随时提问。
阅读全文