头文件
cpp
#ifndef TITLEWDG_H
#define TITLEWDG_H
#include <QWidget>
namespace Ui {
class TitleWdg;
}
class TitleWdg : public QWidget
{
Q_OBJECT
public:
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
源文件
cpp
#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文件
cpp
<?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
cpp
#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";
}