博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt 自定义界面(实现无边框、可移动)
阅读量:4167 次
发布时间:2019-05-26

本文共 859 字,大约阅读时间需要 2 分钟。

设置窗口标志为无边框

this->setWindowFlags(Qt::FramelessWindowHint);

设置无边框之后,窗体是无法移动的,下面我们介绍两种方式来进行移动。

1. Qt事件:重写函数

// 鼠标相对于窗体的位置 event->globalPos() - this->pos()void Widget::mousePressEvent(QMouseEvent *event){    if (event->button() == Qt::LeftButton)    {        m_bPressed = true;        m_point = event->pos();    }}// 若鼠标左键被按下,移动窗体位置void Widget::mouseMoveEvent(QMouseEvent *event){    if (m_bPressed)        move(event->pos() - m_point + pos());}// 设置鼠标未被按下void Widget::mouseReleaseEvent(QMouseEvent *event){    Q_UNUSED(event);    m_bPressed = false;}

2.Win API

包含头文件与需要用到的库

#ifdef Q_OS_WIN#pragma comment(lib, "user32.lib")#include 
#endif

发送系统消息,进行移动

void Widget::mousePressEvent(QMouseEvent *event){#ifdef Q_OS_WIN    if (ReleaseCapture())           SendMessage(HWND(winId()), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);       event->ignore();#else#endif}

转载地址:http://bvqxi.baihongyu.com/

你可能感兴趣的文章
Mutex, semaphore, spinlock的深度解析
查看>>
pthread线程使用小结
查看>>
软件构造心得1——GRASP
查看>>
软件构造心得——可复用软件
查看>>
第九届蓝桥杯Java试题3--复数幂
查看>>
第九届蓝桥杯Java试题4--方格计数
查看>>
用Java求集合的幂集
查看>>
第九届蓝桥杯Java试题6--航班时间
查看>>
第九届蓝桥杯Java试题7--三体攻击
查看>>
第九届蓝桥杯Java试题10--付账问题
查看>>
第九届蓝桥杯Java试题6--递增三元组
查看>>
第九届蓝桥杯Java试题1--哪天返回
查看>>
第九届蓝桥杯Java试题2--猴子分香蕉
查看>>
第九届蓝桥杯Java试题4--第几个幸运数
查看>>
第九届蓝桥杯Java试题8--等腰三角形
查看>>
第八届蓝桥杯Java试题7--Excel地址
查看>>
汇编语言输出斐波那契数列
查看>>
(新手向)双向链表的c语言实现
查看>>
栈的应用:c语言求解n皇后问题(迭代版)
查看>>
(补档)vs汇编开发配置(MASM32+Irvine32)
查看>>