无边框,窗口移动代码

来源:互联网 发布:手机浏览器知乎 编辑:程序博客网 时间:2024/05/22 11:35

本方法可以指定特定的widget来响应拖动事件


直接上代码

这个是公共方法,判断鼠标是不是在指定widget内,

bool isMouseIn(const QWidget* a_widget){QRect bottombar = a_widget->rect();QPoint mouseP = a_widget->mapFromGlobal(QCursor::pos());if (bottombar.contains(mouseP)){return true;}else{return false;}}

然后在 主窗口添加变量,和 3个鼠标虚函数;


        void mousePressEvent(QMouseEvent *);void mouseMoveEvent(QMouseEvent *);void mouseReleaseEvent(QMouseEvent *);private:Ui::LingConClass ui;bool   canMove_;QPoint startWindowPos_;QPoint startCuserPos_;
void XXX::mousePressEvent(QMouseEvent *e){startWindowPos_ = this->pos();startCuserPos_ = QCursor::pos();if (common_funs::isMouseIn(ui.topBar) || common_funs::isMouseIn(ui.bottomBar)){canMove_ = true;}}void XXX::mouseMoveEvent(QMouseEvent *e){if (canMove_) {QPoint dirction = QCursor::pos() - startCuserPos_;this->move(startWindowPos_ + dirction);}}void XXX::mouseReleaseEvent(QMouseEvent *){canMove_ = false;}

完事,




0 0