Qt实现窗口整体拖拽功能.
2017-11-26 23:04
746 查看
我们都知道,当我们鼠标点击并移动应用程序的上边框时,窗口才会整体移动,但有些窗口,你点击移动其他部分,也可以让窗口跟着鼠标移动,这里就教你如何整体移动窗口.
其实实现这样的功能很简单,只需要重写以下的3个鼠标函数即可.
其实实现这样的功能很简单,只需要重写以下的3个鼠标函数即可.
//"c.h" #ifndef C_H #define C_H #include <QtWidgets/QWidget> #include "ui_c.h" #include <QMouseEvent> class c : public QWidget { Q_OBJECT public: c(QWidget *parent = 0); ~c(); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); private: Ui::cClass ui; bool m_move; QPoint m_startPoint; QPoint m_windowPoint; }; #endif // C_H
//"c.cpp" #include "c.h" c::c(QWidget *parent) : QWidget(parent) { ui.setupUi(this); //给是否移动的标志初始化为false. m_move = false; } c::~c() { } void c::mousePressEvent(QMouseEvent *event) { //当鼠标左键点击时. if (event->button() == Qt::LeftButton) { m_move = true; //记录鼠标的世界坐标. m_startPoint = event->globalPos(); //记录窗体的世界坐标. m_windowPoint = this->frameGeometry().topLeft(); } } void c::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton) { //移动中的鼠标位置相对于初始位置的相对位置. QPoint relativePos = event->globalPos() - m_startPoint; //然后移动窗体即可. this->move(m_windowPoint + instance); } } void c::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { //改变移动状态. m_move = false; } }
相关文章推荐
- QT实现拖拽TabWidget选项卡形成单独的窗口,双击标题栏可还原的功能【dock功能】
- Windows Form Tips: 无边框窗口实现用鼠标拖拽的功能
- Qt中实现主窗口拖动功能
- EyesBaby功能实现之窗口拖拽与缩放功能
- Qt实现拖拽数据的功能
- Qt中切换窗口功能的实现
- EyesBaby功能实现之窗口拖拽与缩放功能
- QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)
- Qt5:Qt中屏幕或窗口截图功能的实现
- 文件拖拽功能窗口实现
- Qt Graphics入门小例以及实现场景中相关项拖拽功能总结.
- Qt 之 简单截图功能(三)实现可拖拽选中区域
- Qt窗口组件实现动态背景功能
- 【Qt】自定义标题栏并实现最小化/最大化/关闭窗口功能
- Cindy_Lee 实现的遮罩层的增强版本,增加了增加拖拽,浏览器窗口缩放时遮罩层自动缩放等功能
- js实现模态窗口的拖拽功能
- EyesBaby功能实现之窗口拖拽与缩放功能
- <Qt C++>无边框窗口实现拖拽缩放
- 隐藏QT窗口边框 并且在隐藏后实现窗口拖拽 同时实现透明度
- Qt实现窗口tabwidget的拖出双击弹回功能