前言
在做界面设计的时候,我们常常希望界面更加清新简洁,而做到清醒简洁的首要条件是部件都在自己的可操作范围之中,而QT的界面自带的边框及其违和,下面用几行代码即可去除自带的边框。
一、在构造函数添加 除边框的代码
this->setWindowFlags(Qt::FramelessWindowHint);
二、解决窗口无法移动的问题
当执行完第一步操作以后,可以观察到窗口边框已经去掉,但发现此时的窗口不能自由移动。此时需要重写鼠标按下和移动事件。在头文件添加如下代码:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
//记录鼠标,窗口位置
QPoint windowPos;
QPoint mousePos;
QPoint dPos;
在CPP文件添加如下代码
void WarnDlg::mousePressEvent(QMouseEvent *event)
{
this->windowPos = this->pos(); // 获得部件当前位置
this->mousePos = event->globalPos(); // 获得鼠标位置
this->dPos = mousePos - windowPos; // 移动后部件所在的位置
}
void WarnDlg::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos() - this->dPos);
}
三、最小化和关闭按钮
去掉系统自带的边框以后,一些基础的按钮功能需要自己实现,下面给出最小化和关闭按钮需要的函数。
最小化:
showMinimized();
关闭:
close();