QT窗体去掉标题栏后不能移动的问题

上图:

QT窗体去掉标题栏后不能移动的问题_第1张图片


//隐藏窗口的标题栏
    this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);


加了上述代码,窗口的标题栏隐藏了,但是不能移动了,解决办法


(1)在头文件中添加如下代码:
[html]  view plain  copy
  1. #include <QMouseEvent>  
  2. protected:  
  3.     void mousePressEvent(QMouseEvent *e);  
  4.     void mouseMoveEvent(QMouseEvent *e);  
  5.     void mouseReleaseEvent(QMouseEvent *e);  
  6. private:  
  7.     QPoint last;  
(2)在.cpp文件中重写鼠标的这三个函数:
[html]  view plain  copy
  1. void Gigdialog::mousePressEvent(QMouseEvent *e)  
  2. {  
  3.     last=e->globalPos();  
  4. }  
  5. void Gigdialog::mouseMoveEvent(QMouseEvent *e)  
  6. {  
  7.     int dx = e->globalX() - last.x();  
  8.         int dy = e->globalY() - last.y();  
  9.         last = e->globalPos();  
  10.         move(x()+dx, y()+dy);  
  11. }  
  12. void Gigdialog::mouseReleaseEvent(QMouseEvent *e)  
  13. {  
  14.     int dx = e->globalX() - last.x();  
  15.     int dy = e->globalY() - last.y();  
  16.     move(x()+dx, y()+dy);  
  17. }  

(3)这样没有标题栏的窗体就能移动了!

效果图如下:






你可能感兴趣的:(Qt)