您的位置:首页 > 编程语言 > Qt开发

Qt之去除窗口的标题栏、通过鼠标移动窗口

2017-05-24 17:06 465 查看
------------ main.c -------------------
#include<QApplication>
#include<QWidget>
#include<QDebug>
#include"mywidget.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
//功能新的需求:不再使用框架提供的窗口,自定义一个窗口;
//派生类;
MyWidget w;  //MyWidget类继承于基类QWidget类;
w.show();
return app.exec();
}

------------ MyWidget.h -------------------
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include<QMouseEvent>
#include <QWidget>

class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
void mousePressEvent(QMouseEvent *ev);
void mouseMoveEvent(QMouseEvent *ev);
//移动窗口
void mouseReleaseEvent(QMouseEvent *ev);
//释放窗口
//鼠标原始位置
QPoint posMouseOrigin;

signals:

public slots:

};

#endif // MYWIDGET_H

------------ MyWidget.cpp -------------------
#include "mywidget.h"
#include<QDebug>
#include<QWidget>
#include<QPoint>
#include<QMouseEvent>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
this->setWindowFlags(Qt::FramelessWindowHint); //去掉标题栏;

}

//获取鼠标的按下操作
void MyWidget::mousePressEvent(QMouseEvent *ev)
{
this->posMouseOrigin = QCursor::pos(); //cursor是一个光标类;

}

//获得鼠标移动的操作
void MyWidget::mouseMoveEvent(QMouseEvent *ev)
{
QPoint ptMouseNow = QCursor::pos();
QPoint ptDelta = ptMouseNow - this->posMouseOrigin;
move(this->pos() + ptDelta);
posMouseOrigin = ptMouseNow;
}

//获得鼠标的释放操作;
void MyWidget::mouseReleaseEvent(QMouseEvent *ev)
{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: