From 54b85829a31ebe8a393a74ff2e54fdb17ae419e5 Mon Sep 17 00:00:00 2001 From: Ernie Pasveer Date: Sun, 6 Oct 2024 12:21:13 -0500 Subject: [PATCH] Use new QColorButton that has a visible frame. --- src/CMakeLists.txt | 2 ++ src/QColorButton.cpp | 37 +++++++++------------ src/QColorButton.h | 14 +++----- src/QColorButton.ui | 50 +++++++++++++++++++++++++++++ src/QColorSwatch.cpp | 36 +++++++++++++++++++++ src/QColorSwatch.h | 24 ++++++++++++++ src/SeerStackDumpSettingsDialog.cpp | 3 ++ 7 files changed, 135 insertions(+), 31 deletions(-) create mode 100644 src/QColorButton.ui create mode 100644 src/QColorSwatch.cpp create mode 100644 src/QColorSwatch.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 50b7fcd..b554d92 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -133,6 +133,7 @@ set(HEADER_FILES QProcessInfoWidget.h QProgressIndicator.h QColorButton.h + QColorSwatch.h QDetachTabWidget.h QZoomChartView.h QZoomChart.h @@ -230,6 +231,7 @@ set(SOURCE_FILES QProcessInfoWidget.cpp QProgressIndicator.cpp QColorButton.cpp + QColorSwatch.cpp QDetachTabWidget.cpp QZoomChartView.cpp QZoomChart.cpp diff --git a/src/QColorButton.cpp b/src/QColorButton.cpp index fffe442..0af46f6 100644 --- a/src/QColorButton.cpp +++ b/src/QColorButton.cpp @@ -4,14 +4,21 @@ #include #include -QColorButton::QColorButton(QWidget* parent) : QWidget(parent) { +QColorButton::QColorButton(QWidget* parent) : QFrame(parent) { - _color = palette().color(QPalette::Window); + // Construct the UI. + setupUi(this); + + setColor(palette().color(QPalette::Window)); } -QColorButton::QColorButton(const QColor& color, QWidget* parent) : QWidget(parent) { +QColorButton::QColorButton(const QColor& color, QWidget* parent) : QFrame(parent) { - _color = color; + // Construct the UI. + setupUi(this); + + // Create color swatch + setColor(color); } QColorButton::~QColorButton() { @@ -29,31 +36,17 @@ void QColorButton::mouseDoubleClickEvent (QMouseEvent* e) { } } -void QColorButton::paintEvent(QPaintEvent* e) { - - Q_UNUSED(e) - - // Draw the color to the widget. - QPainter painter(this); - - painter.setPen(Qt::NoPen); - painter.setBrush(color()); - painter.drawRect(rect()); -} - -const QColor& QColorButton::color () { +QColor QColorButton::color () const { // Return the current color. - return _color; + return colorSwatch->color(); } void QColorButton::setColor (const QColor& color) { // Save the new color. - _color = color; - - // Force it to be redrawn. - update(); + colorSwatch->setColor(color); + colorSwatch->update(); // Notify others that are listening. emit colorChanged(); diff --git a/src/QColorButton.h b/src/QColorButton.h index 45f022d..c9e123a 100644 --- a/src/QColorButton.h +++ b/src/QColorButton.h @@ -3,9 +3,11 @@ #include #include #include +#include #include +#include "ui_QColorButton.h" -class QColorButton : public QWidget { +class QColorButton : public QFrame, protected Ui::QColorButtonForm { Q_OBJECT @@ -14,19 +16,13 @@ class QColorButton : public QWidget { QColorButton(const QColor& color, QWidget* parent = 0); ~QColorButton(); - void setColor (const QColor &color); - const QColor& color (); + void setColor (const QColor& color); + QColor color () const; signals: void colorChanged (); protected: void mouseDoubleClickEvent (QMouseEvent* e); - void paintEvent (QPaintEvent* e); - - private slots: - - private: - QColor _color; }; diff --git a/src/QColorButton.ui b/src/QColorButton.ui new file mode 100644 index 0000000..6b7258b --- /dev/null +++ b/src/QColorButton.ui @@ -0,0 +1,50 @@ + + + QColorButtonForm + + + + 0 + 0 + 400 + 300 + + + + Color Button + + + QFrame::NoFrame + + + QFrame::Plain + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + QColorSwatch + QWidget +
QColorSwatch.h
+ 1 +
+
+ + +
diff --git a/src/QColorSwatch.cpp b/src/QColorSwatch.cpp new file mode 100644 index 0000000..f0b1c1a --- /dev/null +++ b/src/QColorSwatch.cpp @@ -0,0 +1,36 @@ +#include "QColorSwatch.h" +#include +#include +#include + +QColorSwatch::QColorSwatch(QWidget* parent) : QWidget(parent) { + setColor(palette().color(QPalette::Window)); +} + +QColorSwatch::QColorSwatch(const QColor& color, QWidget* parent) : QWidget(parent) { + setColor(color); +} + +QColorSwatch::~QColorSwatch() { +} + +void QColorSwatch::setColor (const QColor& color) { + _color = color; +} + +QColor QColorSwatch::color () const { + return _color; +} + +void QColorSwatch::paintEvent(QPaintEvent* e) { + + Q_UNUSED(e) + + // Draw the color to the widget. + QPainter painter(this); + + painter.setPen(Qt::NoPen); + painter.setBrush(color()); + painter.drawRect(rect()); +} + diff --git a/src/QColorSwatch.h b/src/QColorSwatch.h new file mode 100644 index 0000000..e0fcc7b --- /dev/null +++ b/src/QColorSwatch.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include +#include +#include + +class QColorSwatch : public QWidget { + + public: + QColorSwatch(QWidget* parent = 0); + QColorSwatch(const QColor& color, QWidget* parent = 0); + ~QColorSwatch(); + + void setColor (const QColor& color); + QColor color () const; + + protected: + void paintEvent (QPaintEvent* e); + + private: + QColor _color; +}; + diff --git a/src/SeerStackDumpSettingsDialog.cpp b/src/SeerStackDumpSettingsDialog.cpp index c0952ee..d7e4f70 100644 --- a/src/SeerStackDumpSettingsDialog.cpp +++ b/src/SeerStackDumpSettingsDialog.cpp @@ -13,6 +13,9 @@ SeerStackDumpSettingsDialog::SeerStackDumpSettingsDialog (QWidget* parent) : QDi // Set up the UI. setupUi(this); + spHighLightColorButton->setFrameStyle(QFrame::Box|QFrame::Plain); + spHighLightColorButton->setLineWidth(1); + // Setup the widgets setStackPointerExpression("$sp"); setStackPointerColor(QColor("lightGray"));