qt自定义标题栏[领卓教育](非常简单)

相信大家很多朋友对自己的ui界面感到非常的丑,下面让博主来告诉大家如何在QT简单制作一个好看的标题栏,好啦直接进入主题!

1.首先现将系统的标题栏去掉

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);

2.然后在ui界面wiget当中自定义一个跟系统标题栏大小差不多的label(label里可以放你想放的照片)看一下效果
qt自定义标题栏[领卓教育](非常简单)
label如何放图片相信你会的。
3.在这个label上我们可以自己制作标题栏上的最小化,最大化,关闭(pushbutton)自定义3个pushbutton放到label(相当于标题栏)右侧
qt自定义标题栏[领卓教育](非常简单)
我们需要将最小化最大化关闭的图片放到pushbutton当中那么图片就尤为的重要,下面让博主告诉你们一个图片网站,非常的好,而且免费的
qt自定义标题栏[领卓教育](非常简单)
进入阿里巴巴矢量图里面的图片你都可以自己搜索,你想要的几乎都有哦!
下载3个你想要的图片比如(这是博主下载的3个)把他们放到你的资源里
qt自定义标题栏[领卓教育](非常简单)
4.下面就需要将你的图片放到pushbutton里

ui->pushButton_small->setIcon(QIcon(":/icon/small.png"));
ui->pushButton_big->setIcon(QIcon(":/icon/big.png"));
ui->pushButton_close->setIcon(QIcon(":/icon/close.png")); 

然后我们需要把pushbutton的变成flat
qt自定义标题栏[领卓教育](非常简单)
效果图
qt自定义标题栏[领卓教育](非常简单)
现在你发现移动不了pushbutton也不好使,下面继续
5.将3个pushbutton转到槽函数,代码如下

void app::on_pushButton_small_clicked()
{
	this->showMinimized();
}
void app::on_pushButton_big_clicked()
{
	static int flag =1;
	if(flag)
	{
    	flag = !flag;
    	showMaximized();
	}
	else
	{
    	flag = !flag;
    	//setWindowFlags (Qt::SubWindow);
    	showNormal();
	}
}
void app::on_pushButton_close_clicked()
{
	this->close();
}

这样你就可以最小化最大化关闭了,当然你的布局决定你的最大化里面的样式,博主在这里就不解决这个问题了,布局你可以按栅格布局,也可以按在窗体布局中布局,可以解决最大化问题。接下来我们要解决最后一个问题就是移动我们自定义的标题栏啦。
6.这个我是这么解决的,我觉还不错哈哈,现在我们再建一个label大小与之前的一模一样位置也要一模一样,放到label_header_background前面,再将3个pushbutton按键放到label的前面,然后将移动代码加入进去

void app::mousePressEvent(QMouseEvent *e)
{
 	if(e->button() == Qt::LeftButton)
 	{
   	 isDrag = true;
   	 m_position = e->globalPos() - this->pos();
   	 e->accept();
  	}
}
void app::mouseMoveEvent(QMouseEvent *e)
{
	if(isDrag && (e->buttons() && Qt::LeftButton))
	{
    	move(e->globalPos() - m_position);
    	e->accept();
	}
}
void app::mouseReleaseEvent(QMouseEvent *)
{
	isDrag = false;
}
定义自己去定义还有头文件

qt自定义标题栏[领卓教育](非常简单)
这样我们的自定义标题栏就完成了,你可以在label加icon图片但是空白label要在前面这样你就可以移动你的标题栏但是三个pushbutton要放到最前面要不你按不了。