refactor: use QPushButtons and fake toolbutton style without using a style sheet

This commit is contained in:
sithlord48 2025-10-19 19:42:22 -04:00 committed by Chris Rizzitello
parent 697cd57adb
commit 6b05c2abc0
5 changed files with 26 additions and 33 deletions

View file

@ -48,7 +48,6 @@
#include <QRegularExpressionValidator> #include <QRegularExpressionValidator>
#include <QScreen> #include <QScreen>
#include <QScrollBar> #include <QScrollBar>
#include <QToolButton>
#include <memory> #include <memory>
@ -74,7 +73,7 @@ MainWindow::MainWindow()
m_logDock{new LogDock(this)}, m_logDock{new LogDock(this)},
m_lblSecurityStatus{new QLabel(this)}, m_lblSecurityStatus{new QLabel(this)},
m_lblStatus{new QLabel(this)}, m_lblStatus{new QLabel(this)},
m_btnFingerprint{new QToolButton(this)}, m_btnFingerprint{new QPushButton(this)},
m_btnUpdate{new QPushButton(this)}, m_btnUpdate{new QPushButton(this)},
m_actionAbout{new QAction(this)}, m_actionAbout{new QAction(this)},
m_actionClearSettings{new QAction(tr("Clear settings"), this)}, m_actionClearSettings{new QAction(tr("Clear settings"), this)},
@ -236,30 +235,31 @@ void MainWindow::setupControls()
ui->btnSaveServerConfig->setIconSize(QSize(22, 22)); ui->btnSaveServerConfig->setIconSize(QSize(22, 22));
#endif #endif
const auto trayItemSize = QSize(24, 24); static const auto btnHeight = ui->statusBar->height() - 2;
m_btnFingerprint->setStyleSheet(kStyleFlatButtonHoverable); static const auto btnSize = QSize(btnHeight, btnHeight);
static const auto iconSize = QSize(fontMetrics().height() + 2, fontMetrics().height() + 2);
m_btnFingerprint->setFlat(true);
m_btnFingerprint->setIcon(QIcon::fromTheme(QStringLiteral("fingerprint"))); m_btnFingerprint->setIcon(QIcon::fromTheme(QStringLiteral("fingerprint")));
m_btnFingerprint->setFixedSize(trayItemSize); m_btnFingerprint->setFixedSize(btnSize);
m_btnFingerprint->setIconSize(trayItemSize); m_btnFingerprint->setIconSize(iconSize);
m_btnFingerprint->setAutoRaise(true);
m_btnFingerprint->setToolTip(tr("View local fingerprint")); m_btnFingerprint->setToolTip(tr("View local fingerprint"));
ui->statusBar->insertPermanentWidget(0, m_btnFingerprint); ui->statusBar->insertPermanentWidget(0, m_btnFingerprint);
m_lblSecurityStatus->setVisible(false); m_lblSecurityStatus->setVisible(false);
m_lblSecurityStatus->setFixedSize(trayItemSize); m_lblSecurityStatus->setFixedSize(iconSize);
m_lblSecurityStatus->setScaledContents(true); m_lblSecurityStatus->setScaledContents(true);
ui->statusBar->insertPermanentWidget(1, m_lblSecurityStatus); ui->statusBar->insertPermanentWidget(1, m_lblSecurityStatus);
ui->statusBar->insertPermanentWidget(2, m_lblStatus, 1); ui->statusBar->insertPermanentWidget(2, m_lblStatus, 1);
m_btnUpdate->setVisible(false); m_btnUpdate->setVisible(false);
m_btnUpdate->setStyleSheet(kStyleFlatButtonHoverable);
m_btnUpdate->setFlat(true); m_btnUpdate->setFlat(true);
m_btnUpdate->setText(tr("Update available")); m_btnUpdate->setText(tr("Update available"));
m_btnUpdate->setLayoutDirection(Qt::RightToLeft); m_btnUpdate->setLayoutDirection(Qt::RightToLeft);
m_btnUpdate->setIcon(QIcon::fromTheme(QStringLiteral("software-updates-release"))); m_btnUpdate->setIcon(QIcon::fromTheme(QStringLiteral("software-updates-release")));
m_btnUpdate->setFixedHeight(24); m_btnUpdate->setFixedHeight(btnHeight);
m_btnUpdate->setIconSize(trayItemSize); m_btnUpdate->setIconSize(iconSize);
ui->statusBar->insertPermanentWidget(3, m_btnUpdate); ui->statusBar->insertPermanentWidget(3, m_btnUpdate);
} }
@ -322,7 +322,7 @@ void MainWindow::connectSlots()
connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig); connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig);
connect(ui->btnConfigureServer, &QPushButton::clicked, this, [this] { showConfigureServer(""); }); connect(ui->btnConfigureServer, &QPushButton::clicked, this, [this] { showConfigureServer(""); });
connect(ui->lblComputerName, &QLabel::linkActivated, this, &MainWindow::openSettings); connect(ui->lblComputerName, &QLabel::linkActivated, this, &MainWindow::openSettings);
connect(m_btnFingerprint, &QToolButton::clicked, this, &MainWindow::showMyFingerprint); connect(m_btnFingerprint, &QPushButton::clicked, this, &MainWindow::showMyFingerprint);
connect(ui->rbModeServer, &QRadioButton::toggled, this, &MainWindow::coreModeToggled); connect(ui->rbModeServer, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);
connect(ui->rbModeClient, &QRadioButton::toggled, this, &MainWindow::coreModeToggled); connect(ui->rbModeClient, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);

View file

@ -38,7 +38,6 @@ class QPushButton;
class QTextEdit; class QTextEdit;
class QComboBox; class QComboBox;
class QTabWidget; class QTabWidget;
class QToolButton;
class QCheckBox; class QCheckBox;
class QRadioButton; class QRadioButton;
class QMessageBox; class QMessageBox;
@ -187,7 +186,7 @@ private:
LogDock *m_logDock; LogDock *m_logDock;
QLabel *m_lblSecurityStatus = nullptr; QLabel *m_lblSecurityStatus = nullptr;
QLabel *m_lblStatus = nullptr; QLabel *m_lblStatus = nullptr;
QToolButton *m_btnFingerprint = nullptr; QPushButton *m_btnFingerprint = nullptr;
QPushButton *m_btnUpdate = nullptr; QPushButton *m_btnUpdate = nullptr;
// Window Actions // Window Actions

View file

@ -34,13 +34,4 @@ const auto kStyleErrorInactiveLabel = //
"background-color: none" "background-color: none"
); );
const auto kStyleFlatButton = QStringLiteral("QAbstractButton{background-color: none; border: none;}");
const auto kStyleFlatButtonHoverable = QStringLiteral(
"%1\n"
"QAbstractButton:hover{border: 1px solid palette(highlight);"
" border-radius: 6px}"
)
.arg(kStyleFlatButton);
} // namespace deskflow::gui } // namespace deskflow::gui

View file

@ -11,30 +11,33 @@
#include <QEvent> #include <QEvent>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QLabel> #include <QLabel>
#include <QToolButton> #include <QPushButton>
#include <QVBoxLayout> #include <QVBoxLayout>
LogDock::LogDock(QWidget *parent) LogDock::LogDock(QWidget *parent)
: QDockWidget(tr("Log"), parent), : QDockWidget(tr("Log"), parent),
m_textLog{new LogWidget(this)}, m_textLog{new LogWidget(this)},
m_btnClose{new QToolButton(this)}, m_btnClose{new QPushButton(this)},
m_btnFloat{new QToolButton(this)}, m_btnFloat{new QPushButton(this)},
m_lblTitle{new QLabel(tr("Log"), this)} m_lblTitle{new QLabel(tr("Log"), this)}
{ {
const auto iconSize = QSize(fontMetrics().height() - 2, fontMetrics().height() - 2); const auto iconSize = QSize(fontMetrics().height() - 2, fontMetrics().height() - 2);
const auto maxBtnSize = QSize(fontMetrics().height() + 2, fontMetrics().height() + 2);
m_btnFloat->setStyleSheet(deskflow::gui::kStyleFlatButtonHoverable); m_btnFloat->setFixedSize(maxBtnSize);
m_btnFloat->setCheckable(true); m_btnFloat->setCheckable(true);
m_btnFloat->setFlat(true);
m_btnFloat->setIcon(QIcon::fromTheme(QStringLiteral("window-minimize-pip"))); m_btnFloat->setIcon(QIcon::fromTheme(QStringLiteral("window-minimize-pip")));
m_btnFloat->setIconSize(iconSize); m_btnFloat->setIconSize(iconSize);
m_btnFloat->setToolTip(tr("Detach from window")); m_btnFloat->setToolTip(tr("Detach from window"));
connect(m_btnFloat, &QToolButton::toggled, this, &LogDock::setFloating); connect(m_btnFloat, &QPushButton::toggled, this, &LogDock::setFloating);
m_btnClose->setStyleSheet(deskflow::gui::kStyleFlatButtonHoverable); m_btnClose->setFixedSize(maxBtnSize);
m_btnClose->setFlat(true);
m_btnClose->setIcon(QIcon::fromTheme(QStringLiteral("view-close"))); m_btnClose->setIcon(QIcon::fromTheme(QStringLiteral("view-close")));
m_btnClose->setIconSize(iconSize); m_btnClose->setIconSize(iconSize);
m_btnClose->setToolTip(tr("Close Log")); m_btnClose->setToolTip(tr("Close Log"));
connect(m_btnClose, &QToolButton::clicked, this, &QDockWidget::hide); connect(m_btnClose, &QPushButton::clicked, this, &QDockWidget::hide);
auto titleWidget = new QWidget(this); auto titleWidget = new QWidget(this);
titleWidget->installEventFilter(this); titleWidget->installEventFilter(this);

View file

@ -10,7 +10,7 @@
class LogWidget; class LogWidget;
class QLabel; class QLabel;
class QToolButton; class QPushButton;
class LogDock : public QDockWidget class LogDock : public QDockWidget
{ {
@ -25,7 +25,7 @@ protected:
private: private:
LogWidget *m_textLog = nullptr; LogWidget *m_textLog = nullptr;
QToolButton *m_btnClose = nullptr; QPushButton *m_btnClose = nullptr;
QToolButton *m_btnFloat = nullptr; QPushButton *m_btnFloat = nullptr;
QLabel *m_lblTitle = nullptr; QLabel *m_lblTitle = nullptr;
}; };