.h
protected: //标题栏的拖拽
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
QPoint last;
.cpp
//标题栏的拖拽,鼠标不在标题栏范围内无效
void mousePressEvent(QMouseEvent *event)
{
if(ui->widget->rect().contains(event->pos())){
last = event->globalPos();
}
}
void mouseMoveEvent(QMouseEvent *event)
{
if(ui->widget->rect().contains(event->pos())){
int dx = event->globalX()-last.x();
int dy = event->globalY()-last.y();
last = event->globalPos();
move(x()+dx,y()+dy);
}
}
void mouseReleaseEvent(QMouseEvent *event)
{
if(ui->widget->rect().contains(event->pos())){
int dx = event->globalX()-last.x();
int dy = event->globalY()-last.y();
last = event->globalPos();
move(x()+dx,y()+dy);
}
}
本文介绍了一种使用Qt实现窗口标题栏拖拽的方法。通过重写mousePress、mouseMove及mouseRelease事件,使得当鼠标位于标题栏区域内时可以拖动整个窗口。此方法适用于无边框窗口。
1436

被折叠的 条评论
为什么被折叠?



