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
}
原文做者:一去丶二三里
做者博客:去做者博客空间