如何移除Qt固定大小主窗口的调整大小光标?
解决Qt固定大小窗口边缘显示调整光标问题
你已经通过setMinimumSize、setMaximumSize和setFixedSize将窗口设为固定大小,但光标移到边缘仍显示调整样式,可通过以下方法解决:
方法一:添加窗口标志(Windows平台适配)
给窗口添加Qt::MSWindowsFixedSizeDialogHint标志,系统会识别窗口为固定大小,自动禁用边缘调整光标:
w.setWindowFlags(w.windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
方法二:重写事件处理(跨平台通用)
在窗口类中重写event方法,拦截光标查询事件,强制设置为箭头光标:
bool MainWindow::event(QEvent *event) { if (event->type() == QEvent::QueryCursor && isFixedSize()) { setCursor(Qt::ArrowCursor); return true; } return QMainWindow::event(event); }
方法三:使用事件过滤器
给窗口安装事件过滤器,监听鼠标悬停移动事件,在边缘时强制切换为箭头光标:
// 在窗口构造函数中安装过滤器 this->installEventFilter(this); // 实现事件过滤器函数 bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if (obj == this && event->type() == QEvent::HoverMove && isFixedSize()) { setCursor(Qt::ArrowCursor); return true; } return QMainWindow::eventFilter(obj, event); }
方法一操作最简单,适合Windows平台;若需跨平台兼容,推荐方法二或三。
内容的提问来源于stack exchange,提问作者Shaiful Islam
相关产品推荐
相关产品推荐

