前言
在去掉系统的标题栏后,我们需要自己用代码控制程序窗口的移动,并且编写自己的标题栏,最小化、最大化、关闭等功能按钮。本文将带你实现这些功能。
实现步骤:
1、首先去掉系统自带标题栏
this->setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
2、写入窗口移动代码
(1)在.h中的class类声明中增加如下代码(可直接复制粘贴)
private:
Ui::QWidget_Test *ui;
QPoint _mouseMovePosition;
protected:
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
(2)在.cpp中增加如下代码(可直接复制粘贴)
#include <QPoint>
void QWidget_Test::mousePressEvent(QMouseEvent *event)
{
_mouseMovePosition = event->globalPos() - this->pos();
return QMainWindow::mousePressEvent(event);
}
void QWidget_Test::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos() - _mouseMovePosition);
return QMainWindow::mouseMoveEvent(event);
}
void QWidget:_Test::mouseReleaseEvent(QMouseEvent *event)
{
this->move(event->globalPos() - _mouseMovePosition);
return QMainWindow::mouseReleaseEvent(event);
}
注意:
(1)代码中的QMainWindow是与你所创建工程的种类对应的,例如如果你建立的是QWidget,代码中的QMainWindow就相应的替换为QWidget。
(2)代码中函数的QWidget_Test与你创建的文件名对应。
3、创建按钮,并创建槽函数
connect(ui->pushbutton_1,SIGNAL(clicked()),this,SLOT(close())); //关闭窗口按钮
connect(ui->pushbutton_2,SIGNAL(clicked()),this,SLOT(showMinimized())); //最小化窗口按钮
connect(ui->pushbutton_3,SIGNAL(clicked()),this,SLOT(showMaximized())); //最大化窗口按钮
这样,一个自定义标题栏的窗口就做好了!