赞
踩
在QT学习中,我们为了窗口设计美观,会将窗口自带的默认标题栏隐藏。但是这种做法不可避免会遇到一个问题,那就是隐藏默认标题栏后的窗口如何移动?本篇,作者将分享如何移动无标题栏窗口。
在一个窗口中,按下鼠标按键、鼠标移动、松开鼠标按键都会产生鼠标事件QMouseEvent
(1)鼠标按下事件:void mousePressEvent(QMouseEvent *event);
(2)鼠标移动事件:void mouseMoveEvent(QMouseEvent *event);
【例】窗口调用pos函数与鼠标事件调用pos函数,如下图所示。
(1)在类中,重新定义鼠标按下事件和鼠标移动事件,并创建clickPos记录鼠标点击时的坐标
//鼠标按下事件
void mousePressEvent(QMouseEvent *event);
//鼠标移动事件
void mouseMoveEvent(QMouseEvent *event);
//创建点对象,记录鼠标点击时的坐标
QPoint clickPos;
(2)重新鼠标按下事件和鼠标移动事件内容
void regscreen::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
clickPos.setX(event->pos().x());
clickPos.setY(event->pos().y());
}
}
void regscreen::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() == Qt::LeftButton)
{
this->move(this->pos()+event->pos()-this->clickPos);
}
}
(3)窗口移动新坐标为什么是this->pos()+event->pos()-this->clickPos
?
至此,我们就完成了无标题栏窗口的移动,学会的小伙伴赶紧动手操作试试效果吧!
以上就是【QT学习】如何移动无标题栏窗口的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。