Warning, file /graphics/glaxnimate/src/gui/widgets/scalable_button.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QToolButton> 0010 #include <QApplication> 0011 #include <QStylePainter> 0012 #include <QStyleOptionToolButton> 0013 0014 namespace glaxnimate::gui { 0015 0016 0017 class ScalableButton : public QToolButton 0018 { 0019 public: 0020 using QToolButton::QToolButton; 0021 0022 QSize sizeHint() const override 0023 { 0024 return QSize(32, width()); 0025 } 0026 0027 protected: 0028 void resizeEvent ( QResizeEvent * ev ) override 0029 { 0030 updateGeometry(); 0031 QToolButton::resizeEvent(ev); 0032 } 0033 0034 void paintEvent ( QPaintEvent * ) override 0035 { 0036 QStylePainter p(this); 0037 QStyleOptionToolButton opt; 0038 initStyleOption(&opt); 0039 int pad = 16; 0040 int icon_size = std::min(width() - pad, height() - pad); 0041 opt.iconSize = QSize(icon_size, icon_size); 0042 p.drawComplexControl(QStyle::CC_ToolButton, opt); 0043 } 0044 }; 0045 0046 } // namespace glaxnimate::gui