一、取消窗体标题栏
1.FramelessWindowHint 无边框,设置FramelessWindowHint后,带来主要问题是无法移动窗口以及无法使用鼠标拖拽缩放窗口大小。
setWindowFlags(Qt::FramelessWindowHint |Qt::WindowStaysOnTopHint);
二、移动窗体
1.event->globalPos()获取的鼠标位置是鼠标偏离电脑屏幕左上角(x=0,y=0)的位置;
2.pos()获取的位置是主窗口(widget窗口)左上角(边框的左上角,外左上角)相对于电脑屏幕的左上角的(x=0,y=0)偏移位置;
3.event->globalY()<pos().y()+60 在窗体什么位置移动,通常都是点击住标题栏位置移动窗体。
bool is_move_window_;
QPoint move_window_pos_;
#include <QApplication>
#include <QMouseEvent>
void MainWidget::mousePressEvent(QMouseEvent *event) { is_move_window_ = true; move_window_pos_ = event->globalPos() - pos(); return QWidget::mousePressEvent(event); } void MainWidget::mouseMoveEvent(QMouseEvent *event) { if (is_move_window_ && (event->buttons() && Qt::LeftButton) && (event->globalPos()-move_window_pos_).manhattanLength() > QApplication::startDragDistance() &&(event->globalY()<pos().y()+60)) { move(event->globalPos()-move_window_pos_); move_window_pos_ = event->globalPos() - pos(); } return QWidget::mouseMoveEvent(event); } void MainWidget::mouseReleaseEvent(QMouseEvent *event) { is_move_window_=false; }