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

转载自: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();
}

效果图如下:
这里写图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值