1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Qt 自定义界面(实现无边框 可移动)

Qt 自定义界面(实现无边框 可移动)

时间:2021-06-14 06:02:40

相关推荐

Qt 自定义界面(实现无边框 可移动)

设置窗口标志为无边框

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 <qt_windows.h>#endif

发送系统消息,进行移动

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。