#include"InitButtonTopRight.h"
#include<QToolButton>
#include<QPixmap>
#include<QStyle>
#include<QApplication>
#include<QDebug>
#include<QHBoxLayout>
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;
}
#include<QToolButton>
#include<QPixmap>
#include<QStyle>
#include<QApplication>
#include<QDebug>
#include<QHBoxLayout>
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;
}