From 3e942c3dc8955be577079fbc028ce216e1c594b2 Mon Sep 17 00:00:00 2001 From: SineStriker <55847490+SineStriker@users.noreply.github.com> Date: 周二, 11 2月 2025 19:07:53 +0800 Subject: [PATCH] Fix numerous bugs (#162) --- examples/shared/widgetframe/windowbar.cpp | 43 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 35 insertions(+), 8 deletions(-) diff --git a/examples/shared/widgetframe/windowbar.cpp b/examples/shared/widgetframe/windowbar.cpp index a71c463..38a398e 100644 --- a/examples/shared/widgetframe/windowbar.cpp +++ b/examples/shared/widgetframe/windowbar.cpp @@ -1,4 +1,5 @@ -// Copyright (C) 2023-2024 Stdware Collections +// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) +// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) // SPDX-License-Identifier: Apache-2.0 #include "windowbar.h" @@ -24,7 +25,7 @@ if (QLocale::system().textDirection() == Qt::RightToLeft) { layout->setDirection(QBoxLayout::RightToLeft); } - + layout->setContentsMargins(QMargins()); layout->setSpacing(0); for (int i = IconButton; i <= CloseButton; ++i) { @@ -78,14 +79,19 @@ return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::IconButton)); } + QAbstractButton *WindowBar::pinButton() const { + Q_D(const WindowBar); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::PinButton)); + } + QAbstractButton *WindowBar::minButton() const { Q_D(const WindowBar); - return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MinimumButton)); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MinimizeButton)); } QAbstractButton *WindowBar::maxButton() const { Q_D(const WindowBar); - return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MaximumButton)); + return static_cast<QAbstractButton *>(d->widgetAt(WindowBarPrivate::MaximizeButton)); } QAbstractButton *WindowBar::closeButton() const { @@ -130,6 +136,17 @@ btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); } + void WindowBar::setPinButton(QAbstractButton *btn) { + Q_D(WindowBar); + auto org = takePinButton(); + if (org) + org->deleteLater(); + if (!btn) + return; + d->setWidgetAt(WindowBarPrivate::PinButton, btn); + connect(btn, &QAbstractButton::clicked, this, &WindowBar::pinRequested); + } + void WindowBar::setMinButton(QAbstractButton *btn) { Q_D(WindowBar); auto org = takeMinButton(); @@ -137,7 +154,7 @@ org->deleteLater(); if (!btn) return; - d->setWidgetAt(WindowBarPrivate::MinimumButton, btn); + d->setWidgetAt(WindowBarPrivate::MinimizeButton, btn); connect(btn, &QAbstractButton::clicked, this, &WindowBar::minimizeRequested); } @@ -148,7 +165,7 @@ org->deleteLater(); if (!btn) return; - d->setWidgetAt(WindowBarPrivate::MaximumButton, btn); + d->setWidgetAt(WindowBarPrivate::MaximizeButton, btn); connect(btn, &QAbstractButton::clicked, this, &WindowBar::maximizeRequested); } @@ -178,9 +195,19 @@ return static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::IconButton)); } + QAbstractButton *WindowBar::takePinButton() { + Q_D(WindowBar); + auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::PinButton)); + if (!btn) { + return nullptr; + } + disconnect(btn, &QAbstractButton::clicked, this, &WindowBar::pinRequested); + return btn; + } + QAbstractButton *WindowBar::takeMinButton() { Q_D(WindowBar); - auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MinimumButton)); + auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MinimizeButton)); if (!btn) { return nullptr; } @@ -190,7 +217,7 @@ QAbstractButton *WindowBar::takeMaxButton() { Q_D(WindowBar); - auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MaximumButton)); + auto btn = static_cast<QAbstractButton *>(d->takeWidgetAt(WindowBarPrivate::MaximizeButton)); if (!btn) { return nullptr; } -- Gitblit v1.9.1