Qt 自定义界面(实现无边框、可移动)
生活随笔
收集整理的這篇文章主要介紹了
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 }
總結
以上是生活随笔為你收集整理的Qt 自定义界面(实现无边框、可移动)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server Backu
- 下一篇: JavaScript编码encode和d