UI設計是指對軟件的人機交互、操做邏輯、界面美觀的總體設計。好的UI設計不只是讓軟件變得有個性、有品位,還要讓軟件的操做變得溫馨簡單、自由,充分體現軟件的定位和特色。css
愛漂亮之心人皆有之。其實軟件界面就像工業造型同樣,是產品的重要賣點。一個產品擁有美觀的界面會給人帶來溫馨的視覺享受,拉近人與產品的距離,是創建在科學性之上的藝術設計。windows
檢驗一個界面的標準-既不是某個項目開發組領導的意見,也不是項目成員投票的結果,而是終端用戶的感覺。api
因此,對於大多數商業軟件或者專業產品來講,Qt的本地化樣式顯然已經不能知足指望,咱們須要進行大量的樣式美化,纔可以讓它更有個性、有品位。markdown
下面咱們來實現這樣一個界面。less
設置窗口標誌爲無邊框this
setWindowFlags(Qt::FramelessWindowHint | windowFlags());
關於WindowFlags枚舉值不少,其中有一個WindowStaysOnTopHint
,可讓窗體位於全部界面之上,相似於QQ主面板,一打開就在全部軟件之上-比較霸道。spa
設置無邊框以後,窗體是沒法移動的,下面咱們介紹兩種方式來進行移動。.net
// 鼠標相對於窗體的位置 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->globalPos() - m_point);
}
// 設置鼠標未被按下
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event);
m_bPressed = false;
}
包含頭文件與須要用到的庫設計
#ifdef Q_OS_WIN
#pragma comment(lib, "user32.lib")
#include <qt_windows.h>
#endif
發送系統消息,進行移動code
void Widget::mousePressEvent(QMouseEvent *event)
{
#ifdef Q_OS_WIN
if (ReleaseCapture())
SendMessage(HWND(winId()), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
event->ignore();
#else
#endif
}
原文做者:一去丶二三裏
做者博客:去做者博客空間