QT窗体标题栏隐藏后mousemoveevent还是不能托动,求助

jiaowenbill1990 2012-04-05 02:29:18
我照网上的帖子把进行操作 ,但是为什么还是不能拖动窗体,各位,麻烦赐教下:
代码如下
//dialog.h
#ifndef DIALOG_H
#define DIALOG_H

#include <QtGui/QMainWindow>
#include <QPoint>
#include <QMouseEvent>
class dialog : public QMainWindow
{
Q_OBJECT

public:
dialog(QWidget *parent = 0);
~dialog();
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
QPoint dragPosition;
};

#endif // DIALOG_H

然后是dialog.cpp

#include "dialog.h"

dialog::dialog(QWidget *parent)
: QMainWindow(parent)
{
// setWindowFlags(Qt::FramelessWindowHint);

}

dialog::~dialog()
{

}
void dialog::mousePressEvent(QMouseEvent *e)

{
if(e->button()==Qt::LeftButton)
{
dragPosition = e->globalPos() - frameGeometry().topLeft();
e->accept();
}
else
{
}
}
void dialog::mouseMoveEvent(QMouseEvent *e)
{
if (e->button() & Qt::LeftButton)
{

move(e->globalPos() - dragPosition);
e->accept();
}
}

mousepressevent和mousemoveevent里面的代码是网上搬下来的,可是不行啊,麻烦谁知道的说一声。
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myseemydog 2012-04-06
  • 打赏
  • 举报
回复
。。。。先看懂了再copy好点吧。。。
jiaowenbill1990 2012-04-05
  • 打赏
  • 举报
回复
先谢谢了,我待会儿看看
我是学友 2012-04-05
  • 打赏
  • 举报
回复
这个代码是我程序里的,基本上粘过去就能用,LZ看看吧
我是学友 2012-04-05
  • 打赏
  • 举报
回复
    bool isMouseDown;
//移动前老位置
QPoint oldPoint;
//主界面基准点
QPoint mainPoint;

//***鼠标事件、界面移动函数
void Calculator::mousePressEvent(QMouseEvent *mouseEvent)
{
//鼠标按下,为真
isMouseDown = true;
oldPoint = this->mapToGlobal(mouseEvent->pos());
}

void Calculator::mouseReleaseEvent(QMouseEvent *)
{
//如果鼠标松开,为假
isMouseDown = false;
}

void Calculator::mouseMoveEvent(QMouseEvent *mouseEvent)
{
if(isMouseDown && !this->isMaximized())
{
mainPoint = this->mapToGlobal(mouseEvent->pos());
int x = mainPoint.x() - oldPoint.x();
int y = mainPoint.y() - oldPoint.y();
oldPoint = mainPoint;
mainPoint = this->pos();
mainPoint.setX(mainPoint.x() + x);
mainPoint.setY(mainPoint.y() + y);
this->move(mainPoint);
//键盘移动后新的移动点
QPoint newPoint;
newPoint.setX(mainPoint.x()+110);
newPoint.setY(mainPoint.y());
}
}

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧