feat: 添加ElaWidgetTool库

This commit is contained in:
sleepwithoutbz
2025-09-19 22:40:52 +08:00
parent 5f93e8caf6
commit 4eef5c7fd5
407 changed files with 36325 additions and 7 deletions

View File

@@ -0,0 +1,70 @@
#include "ElaPlainTextEditStyle.h"
#include <QPainter>
#include <QPainterPath>
#include <QStyleOption>
#include <QtMath>
#include "ElaTheme.h"
ElaPlainTextEditStyle::ElaPlainTextEditStyle(QStyle* style)
{
_pExpandMarkWidth = 0;
_themeMode = eTheme->getThemeMode();
connect(eTheme, &ElaTheme::themeModeChanged, this, [=](ElaThemeType::ThemeMode themeMode) {
_themeMode = themeMode;
});
}
ElaPlainTextEditStyle::~ElaPlainTextEditStyle()
{
}
void ElaPlainTextEditStyle::drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const
{
switch (element)
{
case QStyle::CE_ShapedFrame:
{
if (const QStyleOptionFrame* fopt = qstyleoption_cast<const QStyleOptionFrame*>(option))
{
//背景绘制
QRect editRect = option->rect;
painter->save();
painter->setRenderHints(QPainter::Antialiasing);
// 边框绘制
painter->setPen(ElaThemeColor(_themeMode, BasicBorder));
painter->setBrush(Qt::NoBrush);
painter->drawRoundedRect(editRect.adjusted(1, 1, -1, -1), 6, 6);
painter->setPen(Qt::NoPen);
// 背景绘制
painter->setBrush(ElaThemeColor(_themeMode, BasicBaseAlpha));
painter->drawRoundedRect(QRectF(editRect.x() + 1.5, editRect.y() + 1.5, editRect.width() - 3, editRect.height() - 3), 6, 6);
// 底边线绘制
painter->setBrush(ElaThemeColor(_themeMode, BasicHemline));
QPainterPath path;
path.moveTo(6, editRect.height());
path.lineTo(editRect.width() - 6, editRect.height());
path.arcTo(QRectF(editRect.width() - 12, editRect.height() - 12, 12, 12), -90, 45);
path.lineTo(6 - 3 * std::sqrt(2), editRect.height() - (6 - 3 * std::sqrt(2)));
path.arcTo(QRectF(0, editRect.height() - 12, 12, 12), 270, 45);
path.closeSubpath();
painter->drawPath(path);
//焦点指示器
painter->setPen(Qt::NoPen);
painter->setBrush(ElaThemeColor(_themeMode, PrimaryNormal));
painter->drawRoundedRect(QRectF(editRect.width() / 2 - _pExpandMarkWidth, editRect.height() - 2.5, _pExpandMarkWidth * 2, 2.5), 2, 2);
painter->restore();
}
return;
}
default:
{
break;
}
}
QProxyStyle::drawControl(element, option, painter, widget);
}