#include "basemainwindow.h" #include #include #include #include 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(); }