forked from github_mirror/framelesshelper
fix button size can't be changed
widget: fix the bug quick: add the interface to change size Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
119d10930b
commit
221f1c12aa
|
@ -49,6 +49,7 @@ class FRAMELESSHELPER_QUICK_API QuickStandardSystemButton : public QQuickButton
|
|||
Q_PROPERTY(QColor normalColor READ normalColor WRITE setNormalColor NOTIFY normalColorChanged FINAL)
|
||||
Q_PROPERTY(QColor activeForegroundColor READ activeForegroundColor WRITE setActiveForegroundColor NOTIFY activeForegroundColorChanged FINAL)
|
||||
Q_PROPERTY(QColor inactiveForegroundColor READ inactiveForegroundColor WRITE setInactiveForegroundColor NOTIFY inactiveForegroundColorChanged FINAL)
|
||||
Q_PROPERTY(qreal iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged FINAL)
|
||||
|
||||
public:
|
||||
explicit QuickStandardSystemButton(QQuickItem *parent = nullptr);
|
||||
|
@ -62,6 +63,7 @@ public:
|
|||
Q_NODISCARD QColor pressColor() const;
|
||||
Q_NODISCARD QColor activeForegroundColor() const;
|
||||
Q_NODISCARD QColor inactiveForegroundColor() const;
|
||||
Q_NODISCARD qreal iconSize() const;
|
||||
|
||||
public Q_SLOTS:
|
||||
void updateColor();
|
||||
|
@ -72,6 +74,7 @@ public Q_SLOTS:
|
|||
void setPressColor(const QColor &value);
|
||||
void setActiveForegroundColor(const QColor &value);
|
||||
void setInactiveForegroundColor(const QColor &value);
|
||||
void setIconSize(const qreal value);
|
||||
|
||||
private:
|
||||
void initialize();
|
||||
|
@ -84,6 +87,7 @@ Q_SIGNALS:
|
|||
void pressColorChanged();
|
||||
void activeForegroundColorChanged();
|
||||
void inactiveForegroundColorChanged();
|
||||
void iconSizeChanged();
|
||||
|
||||
private:
|
||||
QScopedPointer<QQuickText> m_contentItem;
|
||||
|
|
|
@ -98,6 +98,9 @@ void FramelessHelperQt::addWindow(const SystemParameters ¶ms)
|
|||
}
|
||||
window->installEventFilter(data.eventFilter);
|
||||
#ifdef Q_OS_MACOS
|
||||
# if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
|
||||
window->setProperty("_q_mac_wantsLayer", 1);
|
||||
# endif
|
||||
Utils::setSystemTitleBarVisible(windowId, false);
|
||||
#endif
|
||||
FramelessHelper::Core::setApplicationOSThemeAware();
|
||||
|
|
|
@ -95,7 +95,7 @@ add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
|||
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
|
||||
set(__import_base_dir ${PROJECT_BINARY_DIR}/qml)
|
||||
if(${FRAMELESSHELPER_IMPORT_DIR})
|
||||
if(DEFINED FRAMELESSHELPER_IMPORT_DIR)
|
||||
set(__import_base_dir ${FRAMELESSHELPER_IMPORT_DIR})
|
||||
endif()
|
||||
set(__import_uri org/wangwenx190/${PROJECT_NAME})
|
||||
|
|
|
@ -90,6 +90,23 @@ QColor QuickStandardSystemButton::inactiveForegroundColor() const
|
|||
return m_inactiveForegroundColor;
|
||||
}
|
||||
|
||||
qreal QuickStandardSystemButton::iconSize() const
|
||||
{
|
||||
if (m_contentItem.isNull()) {
|
||||
return -1;
|
||||
}
|
||||
const QFont font = m_contentItem->font();
|
||||
const qreal point = font.pointSizeF();
|
||||
if (point > 0) {
|
||||
return point;
|
||||
}
|
||||
const int pixel = font.pixelSize();
|
||||
if (pixel > 0) {
|
||||
return pixel;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void QuickStandardSystemButton::setButtonType(const QuickGlobal::SystemButtonType type)
|
||||
{
|
||||
Q_ASSERT(type != QuickGlobal::SystemButtonType::Unknown);
|
||||
|
@ -189,6 +206,21 @@ void QuickStandardSystemButton::setInactiveForegroundColor(const QColor &value)
|
|||
Q_EMIT inactiveForegroundColorChanged();
|
||||
}
|
||||
|
||||
void QuickStandardSystemButton::setIconSize(const qreal value)
|
||||
{
|
||||
Q_ASSERT(value > 0);
|
||||
if (qFuzzyIsNull(value) || (value < 0)) {
|
||||
return;
|
||||
}
|
||||
if (qFuzzyCompare(iconSize(), value)) {
|
||||
return;
|
||||
}
|
||||
QFont font = m_contentItem->font();
|
||||
font.setPointSizeF(value);
|
||||
m_contentItem->setFont(font);
|
||||
Q_EMIT iconSizeChanged();
|
||||
}
|
||||
|
||||
void QuickStandardSystemButton::updateColor()
|
||||
{
|
||||
const bool hover = isHovered();
|
||||
|
|
|
@ -39,8 +39,6 @@ Q_LOGGING_CATEGORY(lcStandardSystemButton, "wangwenx190.framelesshelper.widgets.
|
|||
|
||||
using namespace Global;
|
||||
|
||||
static constexpr const QRect g_buttonRect = {QPoint(0, 0), kDefaultSystemButtonSize};
|
||||
|
||||
StandardSystemButtonPrivate::StandardSystemButtonPrivate(StandardSystemButton *q) : QObject(q)
|
||||
{
|
||||
Q_ASSERT(q);
|
||||
|
@ -331,8 +329,9 @@ void StandardSystemButtonPrivate::paintEventHandler(QPaintEvent *event)
|
|||
}
|
||||
return {};
|
||||
}();
|
||||
const QRect buttonRect = {QPoint(0, 0), q->size()};
|
||||
if (backgroundColor.isValid()) {
|
||||
painter.fillRect(g_buttonRect, backgroundColor);
|
||||
painter.fillRect(buttonRect, backgroundColor);
|
||||
}
|
||||
if (!m_code.isEmpty()) {
|
||||
painter.setPen([this]() -> QColor {
|
||||
|
@ -345,7 +344,7 @@ void StandardSystemButtonPrivate::paintEventHandler(QPaintEvent *event)
|
|||
return kDefaultBlackColor;
|
||||
}());
|
||||
painter.setFont(FramelessManagerPrivate::getIconFont());
|
||||
painter.drawText(g_buttonRect, Qt::AlignCenter, m_code);
|
||||
painter.drawText(buttonRect, Qt::AlignCenter, m_code);
|
||||
}
|
||||
painter.restore();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue