Qt自定义无边框界面
用户界面(User Interface)是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。很多时候,Qt本地样式可能无法实现让我们的界面更简化、美观,那么这时候,那就需要自定义控件或者界面模块来实现。
设置窗体无边框
setWindowFlags(Qt::FramelessWindowHint);
设置窗体最大化最小化
setWindowFlags(windowFlags() | Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint);
窗口移动事件
#include <QMouseEvent>// 移动事件头文件
public:
QRect m_areaMoveable;// 可移动窗口区域,鼠标只有在此范围内才可移动
QPoint move_point;//移动的距离
bool mouse_press;//鼠标按下
protected:
void mousePressEvent(QMouseEvent *event);//鼠标按下事件
void mouseReleaseEvent(QMouseEvent *event);//鼠标释放事件
void mouseMoveEvent(QMouseEvent *event);//鼠标移动事件
m_areaMoveable = m_pTitleWidget->geometry();//设置可移动区域
setMouseTracking(true);//开启鼠标追踪
移动事件实现:
void MainUI::mousePressEvent(QMouseEvent *event)
{
if (event->button()==Qt::LeftButton)
{
mouse_press = true;
move_point = event->globalPos() - event->pos();
event->accept();
}
}
void MainUI::mouseReleaseEvent(QMouseEvent *event)
{
mouse_press = false;
}
void MainUI::mouseMoveEvent(QMouseEvent *event)
{
if (mouse_press && (event->button() && Qt::LeftButton))
{
if(!m_areaMoveable.contains(move_point))
return;
move( event->globalPos() - move_point);
event-<accept();
}
}