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<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>߿<EFBFBD>
|
|||
|
//WindowMinimizeButtonHint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
|
|||
|
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);
|
|||
|
//<2F><><EFBFBD>ô<EFBFBD><C3B4>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><CDB8>
|
|||
|
setAttribute(Qt::WA_TranslucentBackground);
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>ɫ
|
|||
|
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();
|
|||
|
}
|