本文为学习记录,若有错误,请联系作者,谦虚受教。
前言
答案从来都是自己去寻找的,而不是别人告诉你的。
一、目的
在QT实现应用程序的时候,一般会将默认的标题栏去掉,然后自定义一个标题栏,此时就需要使用到鼠标事件来定义。
实现逻辑的关键点是找到对应的坐标点。
二、相关代码
在QT中,鼠标事件被封装成QMouseEvent对象,其中包含很多参数,来描述鼠标事件。
鼠标移动事件void mouseMoveEvent(QMouseEvent *event);
鼠标按下事件void mousePressEvent(QMouseEvent *event);
鼠标释放事件void mouseReleaseEvent(QMouseEvent *event);
鼠标双击事件void mouseDoubleClickEvent(QMouseEvent *event);
以下代码是实现窗口岁鼠标移动。
1…h代码
protected:
void mouseMoveEvent(QMouseEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *);
private:
QPoint m_mousePoint;
QPoint movePoint;
bool mousePress;
2…cpp代码
需要添加头文件
#include< QMouseEvent >
//重写鼠标事件,实现除去标题栏后任然能实现窗口移动
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
mousePress = true;
}
//窗口移动距离
movePoint = event->globalPos() - pos();
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event)
mousePress = false;
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if(mousePress)
{
QPoint movePos = event->globalPos();//窗口初始位置
move(movePos - movePoint);
}
}
到此,窗口就可以随着鼠标的按下即可移动。
总结
善于总结,多进一步。
版权声明:本文为m0_51988927原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。