KGC_TEST/KGCAPP/3rdparty/qwindowkit/examples/shared/widgetframe/windowbutton.cpp

95 lines
2.2 KiB
C++

// 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 "windowbutton.h"
#include "windowbutton_p.h"
#include <QtCore/QDebug>
#include <QtGui/QtEvents>
namespace QWK {
WindowButtonPrivate::WindowButtonPrivate() = default;
WindowButtonPrivate::~WindowButtonPrivate() = default;
void WindowButtonPrivate::init() {
}
void WindowButtonPrivate::reloadIcon() {
Q_Q(WindowButton);
if (!q->isEnabled() && !iconDisabled.isNull()) {
q->setIcon(iconDisabled);
return;
}
if (q->isChecked() && !iconChecked.isNull()) {
q->setIcon(iconChecked);
return;
}
if (!iconNormal.isNull()) {
q->setIcon(iconNormal);
}
}
WindowButton::WindowButton(QWidget *parent) : WindowButton(*new WindowButtonPrivate(), parent) {
}
WindowButton::~WindowButton() = default;
QIcon WindowButton::iconNormal() const {
Q_D(const WindowButton);
return d->iconNormal;
}
void WindowButton::setIconNormal(const QIcon &icon) {
Q_D(WindowButton);
d->iconNormal = icon;
d->reloadIcon();
}
QIcon WindowButton::iconChecked() const {
Q_D(const WindowButton);
return d->iconChecked;
}
void WindowButton::setIconChecked(const QIcon &icon) {
Q_D(WindowButton);
d->iconChecked = icon;
d->reloadIcon();
}
QIcon WindowButton::iconDisabled() const {
Q_D(const WindowButton);
return d->iconDisabled;
}
void WindowButton::setIconDisabled(const QIcon &icon) {
Q_D(WindowButton);
d->iconDisabled = icon;
d->reloadIcon();
}
void WindowButton::checkStateSet() {
Q_D(WindowButton);
d->reloadIcon();
}
void WindowButton::mouseDoubleClickEvent(QMouseEvent *event) {
if (event->button() == Qt::LeftButton) {
Q_EMIT doubleClicked();
}
}
WindowButton::WindowButton(WindowButtonPrivate &d, QWidget *parent)
: QPushButton(parent), d_ptr(&d) {
d.q_ptr = this;
d.init();
}
}