头文件
#ifndef TITLEWDG_H
#define TITLEWDG_H#include <QWidget>namespace Ui {
class TitleWdg;
}class TitleWdg : public QWidget
{Q_OBJECTpublic:explicit TitleWdg(QWidget *parent = nullptr);~TitleWdg(); signals:void maximize();void minimize();void closeWindow();protected:void paintEvent(QPaintEvent *event);private slots:void on_close_clicked();void on_min_clicked();void on_max_clicked();private:Ui::TitleWdg *ui;
};#endif // TITLEWDG_H
源文件
#include "titlewdg.h"
#include "ui_titlewdg.h"#include <QPainter>
#include <QStyleOption>TitleWdg::TitleWdg( QWidget *parent): QWidget(parent),ui(new Ui::TitleWdg){ui->setupUi(this); }TitleWdg::~TitleWdg()
{delete ui;
}void TitleWdg::paintEvent(QPaintEvent *event)
{Q_UNUSED(event)QStyleOption opt;opt.init(this);QPainter painter(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
}void TitleWdg::on_close_clicked()
{closeWindow();
}void TitleWdg::on_min_clicked()
{minimize();
}void TitleWdg::on_max_clicked()
{maximize();
}
UI文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>TitleWdg</class><widget class="QWidget" name="TitleWdg"><property name="geometry"><rect><x>0</x><y>0</y><width>636</width><height>33</height></rect></property><property name="windowTitle"><string>Form</string></property><layout class="QHBoxLayout" name="horizontalLayout"><property name="leftMargin"><number>9</number></property><property name="topMargin"><number>5</number></property><property name="rightMargin"><number>9</number></property><property name="bottomMargin"><number>5</number></property><item><widget class="QLabel" name="logo"><property name="text"><string/></property></widget></item><item><widget class="QLabel" name="title"><property name="text"><string/></property></widget></item><item><spacer name="horizontalSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>366</width><height>20</height></size></property></spacer></item><item><widget class="QToolButton" name="min"><property name="text"><string/></property></widget></item><item><widget class="QToolButton" name="max"><property name="text"><string/></property></widget></item><item><widget class="QToolButton" name="close"><property name="text"><string/></property></widget></item></layout></widget><resources/><connections/>
</ui>
qss
#titleWdg
{color: #cdcdcd;background-color: #434343;
}#titleWdg #max
{width: 26px;height: 26px;border-image: url(:/img/src/img/maximize-active.svg);
}#titleWdg #max:hover
{border-image: url(:/img/src/img/maximize-hover.svg);
}#titleWdg #min
{width: 26px;height: 26px;border-image: url(:/img/src/img/minimize-active.svg);
}#titleWdg #min:hover
{border-image: url(:/img/src/img/minimize-hover.svg);
}#titleWdg #close
{width: 26px;height: 26px;border-image: url(:/img/src/img/close-active.svg);
}#titleWdg #close:hover
{border-image: url(:/img/src/img/close-hover.svg);
}#titleWdg #logo
{min-width: 26px;height: 26px;border-image: url(:/img/YMTC.ico);
}#titleWdg #title
{font: bold 12px;color: #FFFFFF;qproperty-text: "Working Log Tool v1.0.0";
}