Qt学习之路之无边窗口的移动
2014-12-25 10:01
316 查看
实现无边窗口的移动,笔者也迷惑不解了一段时间。下面给出一个例子,实现无边窗口的移动。
move_widget.h
move_widget.cpp
说明: 笔者的这个 实现,必须包含2个头文件:
#include <windows.h>
#include <WindowsX.h>
上面的这个例子中,实现窗口移动的函数是:
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
就是这样啦~~~~~
赶紧试试试试呗~~~~
move_widget.h
#pragma once #include <QWidget> #include <QLineEdit> #include <windows.h> #include <WindowsX.h> class LineWidget : public QWidget { Q_OBJECT public: explicit LineWidget(QWidget *parent = 0); protected: bool nativeEvent(const QByteArray &eventType, void *message, long *result); private: QLineEdit *lineEdit; };
move_widget.cpp
#include "line_widget.h" LineWidget::LineWidget(QWidget *parent /*= 0*/) : QWidget(parent) { //---lineEdit 控件 lineEdit = new QLineEdit(this); lineEdit->setMaxLength(8); lineEdit->setGeometry(30, 15, 100, 20); //---指定窗口大小 resize(300, 60); //--设置无边窗口 setWindowFlags(Qt::FramelessWindowHint); } /* 函数名:nativeEvent 函数参数:const QByteArray &eventType, void *message, long *result 函数返回值: true/ false */ //-----窗口移动 bool LineWidget::nativeEvent(const QByteArray &eventType, void *message, long *result) { MSG* msg = reinterpret_cast<MSG*>(message); switch (msg->message) { case WM_NCHITTEST: int xPos = GET_X_LPARAM(msg->lParam) - this->pos().x(); int yPos = GET_Y_LPARAM(msg->lParam) - this->pos().y(); int iCri = 10; //--------------------- int critical 临界值 //---------------------------------------------------------------------- 移动窗体 if (this->childAt(xPos, yPos) == 0) // ---------------------child at 判断当前鼠标是否位于控件 { *result = HTCAPTION; } else { return false; } return true; } return false; }
说明: 笔者的这个 实现,必须包含2个头文件:
#include <windows.h>
#include <WindowsX.h>
上面的这个例子中,实现窗口移动的函数是:
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
就是这样啦~~~~~
赶紧试试试试呗~~~~
相关文章推荐
- QT学习之路————QT窗体去掉标题栏后不能移动的问题
- Qt学习之路(5):组件布局
- QT学习--窗口部件类学习
- MFC学习之路(六)在DoModal()之前态设置对话框窗口标题
- Qt学习之路_5(Qt TCP的初步使用)
- Qt学习之路_4(Qt UDP的初步使用)
- 用JS实现移动的窗口 - 流星絮语 JAVA学习笔记 - CSDNBlog
- Qt学习之路_9(Qt中Item Widget初步探索)
- QT学习笔记----窗口的相互切换
- QT学习4:使用窗口部件
- Qt学习之路(37): Qt容器类之关联存储容器
- Qt学习之路(5):组件布局
- Qt:支持鼠标拖动来移动内容的窗口
- Qt学习之路(28): 坐标变换
- Qt学习之路_1(安装及首次体验)
- Qt学习之路:初探信号槽
- Qt学习笔记--窗口部件(Widget)
- Qt学习——分割窗口QSplitter类 .
- Qt移植学习之路 QT4.5.3至mini2440(2)
- Qt学习之路_8(Qt中与文件目录相关操作)