Qt之自定义界面添加最小化、最大化和关闭按钮

时间:2022-01-17 23:54:35

转载自:http://blog.csdn.net/locky1218/article/details/9841379


个人比较喜欢讲界面做成没有边框的,此时最大化、关闭和最小化的按键是没有的,这个时候就需要自己添加,一种方法就是用图片作为最大化、关闭和最小化的图标,但是在图标的网站找图标,找到的都极为难看,所以最终舍弃了这种方法。

这里介绍我找到资料的第二种方法:

#include "dialog.h"
#include<QToolButton>
#include<QPixmap>
#include<QStyle>
#include<QApplication>

Dialog::Dialog(QWidget *parent) : QDialog(parent)
{
int wide = width();//获取界面的宽度

//构建最小化、最大化、关闭按钮
QToolButton *minButton = new QToolButton(this);
QToolButton *closeButton= new QToolButton(this);
QToolButton *maxButton= new QToolButton(this);

//获取最小化、关闭按钮图标
QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);
QPixmap maxPix = style()->standardPixmap(QStyle::SP_TitleBarMaxButton);

//设置最小化、关闭按钮图标
minButton->setIcon(minPix);
closeButton->setIcon(closePix);
maxButton->setIcon(maxPix);

//设置最小化、关闭按钮在界面的位置
minButton->setGeometry(wide-65,5,20,20);
closeButton->setGeometry(wide-25,5,20,20);
maxButton->setGeometry(wide-45,5,20,20);

//设置鼠标移至按钮上的提示信息
minButton->setToolTip(tr("最小化"));
closeButton->setToolTip(tr("关闭"));
maxButton->setToolTip(tr("最大化"));

//设置最小化、关闭按钮的样式
minButton->setStyleSheet("background-color:transparent;");
closeButton->setStyleSheet("background-color:transparent;");
maxButton->setStyleSheet("background-color:transparent;");

connect(closeButton, SIGNAL(clicked()), this, SLOT(windowclosed()) );
connect(minButton, SIGNAL(clicked()), this, SLOT(windowmin()));
connect(maxButton, SIGNAL(clicked()), this, SLOT(winmax()));
}

Dialog::~Dialog() {}

void Dialog::windowclosed()
{
//QApplication::exit();
this->close();
}
void Dialog::windowmin()
{
this->showMinimized();
}
void Dialog::winmax()
{
this->showMaximized();
}

效果图如下:
Qt之自定义界面添加最小化、最大化和关闭按钮