10#include <QScopedPointer>
15#include <QCoreApplication>
19#define MIN_BUTTON_WIDTH 30
20#define MAX_BUTTON_WIDTH 30
21#define CLS_BUTTON_WIDTH 40
23WindowButton::WindowButton(QWidget *p)
34 , m_signalEnabled(false)
47 m_minimizeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
56 m_maximizeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
60 m_closeButton->setObjectName(QStringLiteral(
"qx_CloseWindowButton"));
64 m_closeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
67 QHBoxLayout *lay =
new QHBoxLayout(q);
69 lay->setContentsMargins(1, 0, 0, 1);
103 return QSize(width, height);
120 Q_EMIT q->buttonMinimizeClicked();
122 Q_EMIT q->buttonMaximzieClicked();
124 Q_EMIT q->buttonCloseClicked();
127 QWidget *pw = q->parentWidget();
132 if (pw->isMaximized()) {
146 QTimer::singleShot(50,
this, [
this]() {
163 if (this->parent()) {
164 this->parent()->removeEventFilter(
this);
172 if (flags == Qt::WindowFlags()) {
173 if (QWidget *pw = parentWidget()) {
174 flags = pw->windowFlags();
177 d->updateButton(flags);
183 if (d->m_iconScale == scale) {
186 d->m_iconScale = scale;
187 d->updateButtonIconSize();
193 bool on = s.testFlag(Qt::WindowMaximized);
194 d->m_maximizeButton->setChecked(on);
195 d->m_maximizeButton->setToolTip(on ? tr(
"Restore") : tr(
"Maximize"));
201 return d->sizeHint();
207 return d->m_maximizeButton;
218 return d->m_signalEnabled;
224 d->m_signalEnabled = enable;
#define QX_INIT_PRIVATE(Class)
#define Q_NULLPTR
Copyleft (C) 2025 maminjie canpool@163.com SPDX-License-Identifier: MulanPSL-2.0
#define QX_FINI_PRIVATE()
#define QX_RIBBON_END_NAMESPACE
#define QX_RIBBON_BEGIN_NAMESPACE
#define RibbonElementStyleOpt