#include "configpanelbutton.h" #include "ui_configpanelbutton.h" #include #include ConfigPanelButton::ConfigPanelButton(QWidget *parent) : QWidget(parent), ui(new Ui::ConfigPanelButton) { ui->setupUi(this); showingFavoriteButton = false; ui->favoriteButton->hide(); textRect = QRect(20, 0, 556, 65); valueRect = QRect(556, 0, 265, 65); connect(ui->pushButton, SIGNAL(pressed()), SIGNAL(pressed())); connect(ui->pushButton, SIGNAL(released()), SIGNAL(released())); connect(ui->pushButton, SIGNAL(clicked()), SIGNAL(clicked())); } ConfigPanelButton::~ConfigPanelButton() { delete ui; } void ConfigPanelButton::setText(const QString &text) { if (text_ == text) return; text_ = text; updateIcon(); } void ConfigPanelButton::setValue(const QString &value) { if (value_ == value) return; value_ = value; updateIcon(); } void ConfigPanelButton::showFavoriteButton() { if (showingFavoriteButton) return; showingFavoriteButton = true; ui->favoriteButton->show(); textRect = QRect(20 + 77, 0, 556 - 77, 65); updateIcon(); } void ConfigPanelButton::hideFavoriteButton() { if (!showingFavoriteButton) return; showingFavoriteButton = false; ui->favoriteButton->hide(); textRect = QRect(20, 0, 556, 65); updateIcon(); } void ConfigPanelButton::updateIcon() { QPixmap pixmap(ui->pushButton->size()); pixmap.fill(Qt::transparent); QFont font = ui->pushButton->font(); font.setPixelSize(30); QPainter painter(&pixmap); painter.setFont(font); painter.setPen(Qt::white); painter.drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, text_); painter.setPen(Qt::gray); painter.drawText(valueRect, Qt::AlignCenter, value_); QIcon icon(pixmap); ui->pushButton->setIcon(icon); ui->pushButton->setIconSize(pixmap.size()); }