Qt隐藏边框后添加最大化最小化关闭按钮

#include"InitButtonTopRight.h"
#include  
#include  
#include  
#include
#include
#include


InitButtonTopRight::InitButtonTopRight(QWidget* widget)
    :QWidget(widget)
{
    Qt::WindowFlags flags = Qt::Window;
    flags |= Qt::WindowMinimizeButtonHint;
    flags |= Qt::WindowMaximizeButtonHint;
    flags |= Qt::WindowCloseButtonHint;
    setWindowFlags(flags);
    this->setWindowFlags(Qt::FramelessWindowHint);
    label = new QLabel();
    label->setText("WindowTittle");
    int wide = width();//获取界面的宽度
    int heigh = height();
    //构建最小化、最大化、关闭按钮 
    //qDebug() << "Window width is:" << wide;
    QToolButton* position = new QToolButton(this);
    minButton = new QToolButton(this);
    closeButton = new QToolButton(this);
    maxButton =  new QToolButton(this);
    m_isMaxflags = false;
    //获取最小化、关闭按钮图标  
    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);
    //设置最小化、关闭按钮在界面的位置  
    /*position->setGeometry(0, 1, 20, 20);
    minButton->setGeometry(wide-40, 1, 200, 20);
    maxButton->setGeometry(wide-20, 1, 20, 20);
    closeButton->setGeometry(wide, 1, 20, 20);*/
    QHBoxLayout* layout = new QHBoxLayout();
    layout->insertWidget(0, label);
    layout->insertStretch(1);
    layout->insertWidget(2, minButton);
    layout->insertWidget(3, maxButton);
    layout->insertWidget(4, closeButton);
    layout->setSpacing(0);
    QVBoxLayout* main_layout = new QVBoxLayout();
    main_layout->insertLayout(0,layout);
    main_layout->insertStretch(1);
    setLayout(main_layout);


    //设置鼠标移至按钮上的提示信息  
    minButton->setToolTip(QString::fromLocal8Bit("最小化"));
    closeButton->setToolTip(QString::fromLocal8Bit("关闭"));
    maxButton->setToolTip(QString::fromLocal8Bit("最大化"));
    //设置最小化、关闭按钮的样式
    position->setStyleSheet("background-color:transparent;");
    minButton->setStyleSheet("background-color:transparent;");
    closeButton->setStyleSheet("background-color:transparent;");
    maxButton->setStyleSheet("background-color:transparent;");
    this->resize(600,500);
    connect(closeButton, SIGNAL(clicked()), this, SLOT(windowClose()));
    connect(minButton, SIGNAL(clicked()), this, SLOT(windowMin()));
    connect(maxButton, SIGNAL(clicked()), this, SLOT(windowMax()));
}


void InitButtonTopRight::windowClose()
{
    this->close();
}


void InitButtonTopRight::windowMin()
{
    setWindowState(Qt::WindowMinimized);
}


void InitButtonTopRight::windowMax()
{
    if (!m_isMaxflags)
    {
        setWindowState(Qt::WindowMaximized);
        m_isMaxflags = true;
        return;
    }
    setWindowState(Qt::WindowNoState);
    m_isMaxflags = false;
}

你可能感兴趣的:(Qt,qt,隐藏边框,实现最大化,最小化,关闭按钮)