90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
#include "basemainwindow.h"
|
|
#include <QDesktopWidget>
|
|
#include <QApplication>
|
|
#include <QPainter>
|
|
#include <QFile>
|
|
|
|
BaseWindow::BaseWindow(QWidget*parent)
|
|
: QDialog(parent)
|
|
{
|
|
//FramelessWindowHint属性设置窗口去除边框
|
|
//WindowMinimizeButtonHint 属性设置在窗口最小化时,点击任务栏窗口可以显示出原窗口
|
|
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);
|
|
//设置窗口背景透明
|
|
setAttribute(Qt::WA_TranslucentBackground);
|
|
//初始化标题栏
|
|
initTitleBar();
|
|
}
|
|
|
|
BaseWindow::~BaseWindow()
|
|
{
|
|
|
|
}
|
|
|
|
void BaseWindow::initTitleBar()
|
|
{
|
|
m_titleBar = new MyTitleBar(this);
|
|
m_titleBar->move(0, 0);
|
|
connect(m_titleBar, SIGNAL(signalButtonMinClicked()), this, SLOT(onButtonMinClicked()));
|
|
connect(m_titleBar, SIGNAL(signalButtonRestoreClicked()), this, SLOT(onButtonRestoreClicked()));
|
|
connect(m_titleBar, SIGNAL(signalButtonMaxClicked()), this, SLOT(onButtonMaxClicked()));
|
|
connect(m_titleBar, SIGNAL(signalButtonCloseClicked()), this, SLOT(onButtonCloseClicked()));
|
|
}
|
|
|
|
void BaseWindow::paintEvent(QPaintEvent* event)
|
|
{
|
|
//设置背景色
|
|
QPainter painter(this);
|
|
QPainterPath pathBack;
|
|
pathBack.setFillRule(Qt::WindingFill);
|
|
pathBack.addRoundedRect(QRect(0, 0, this->width(), this->height()), 3, 3);
|
|
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
|
|
painter.fillPath(pathBack, QBrush(QColor(160, 160, 160)));
|
|
return QWidget::paintEvent(event);
|
|
}
|
|
|
|
void BaseWindow::loadStyleSheet(const QString &sheetName)
|
|
{
|
|
QFile file(":/Resource Files/" + sheetName + ".css");
|
|
file.open(QFile::ReadOnly);
|
|
if (file.isOpen())
|
|
{
|
|
QString styleSheet = this->styleSheet();
|
|
styleSheet += QLatin1String(file.readAll());
|
|
this->setStyleSheet(styleSheet);
|
|
}
|
|
}
|
|
|
|
void BaseWindow::onButtonMinClicked()
|
|
{
|
|
if (Qt::Tool == (windowFlags() & Qt::Tool))
|
|
{
|
|
hide();
|
|
}
|
|
else
|
|
{
|
|
showMinimized();
|
|
}
|
|
}
|
|
|
|
void BaseWindow::onButtonRestoreClicked()
|
|
{
|
|
QPoint windowPos;
|
|
QSize windowSize;
|
|
m_titleBar->getRestoreInfo(windowPos, windowSize);
|
|
this->setGeometry(QRect(windowPos, windowSize));
|
|
}
|
|
|
|
void BaseWindow::onButtonMaxClicked()
|
|
{
|
|
m_titleBar->saveRestoreInfo(this->pos(), QSize(this->width(), this->height()));
|
|
QRect desktopRect = QApplication::desktop()->availableGeometry();
|
|
QRect FactRect = QRect(desktopRect.x() - 3, desktopRect.y() - 3, desktopRect.width() + 6, desktopRect.height() + 6);
|
|
setGeometry(FactRect);
|
|
}
|
|
|
|
void BaseWindow::onButtonCloseClicked()
|
|
{
|
|
close();
|
|
}
|