OGS
ColorPickerPushButton.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4// ** INCLUDES **
6
7#include <QColorDialog>
8
10 : QPushButton(parent)
11{
12 setAutoFillBackground(true);
13 _color = QColor("white");
14}
15
17{
18 Q_UNUSED(e);
19 QColor newColor = QColorDialog::getColor(_color, nullptr, "Choose a color");
20 if (!newColor.isValid())
21 {
22 return;
23 }
24
25 setColor(newColor);
26
27 emit colorPicked(_color);
28}
29
31{
32 QString colorStr = "rgb";
33 colorStr.append(colorToString(color));
34
35 return colorStr;
36}
37
39{
40 QString colorStr = "(";
41 colorStr.append(QString::number(color.red()));
42 colorStr.append(", ");
43 colorStr.append(QString::number(color.green()));
44 colorStr.append(", ");
45 colorStr.append(QString::number(color.blue()));
46 colorStr.append(")");
47
48 return colorStr;
49}
50
52{
53 _color = color;
54
55 // Compute text color
56 QColor hsv = _color.toHsv();
57 QString textColorStr;
58 if (hsv.valueF() < 0.5f)
59 {
60 textColorStr = "color: rgb(255, 255, 255);";
61 }
62 else
63 {
64 textColorStr = "color: rgb(0, 0, 0);";
65 }
66
67 QString stylesheetStr = "background-color: ";
68 stylesheetStr.append(colorToCss(_color));
69 stylesheetStr.append(";");
70 stylesheetStr.append(textColorStr);
71 this->setStyleSheet(stylesheetStr);
72
73 this->setText(colorToString(_color));
74}
75
77{
78 setColor(QColor::fromRgbF(color[0], color[1], color[2]));
79}
void mouseReleaseEvent(QMouseEvent *e) override
Calls the QColorDialog.
void colorPicked(QColor)
Is emitted when a color was picked from the dialog.
ColorPickerPushButton(QWidget *parent=nullptr)
void setColor(QColor color)
Sets the color.
QString colorToString(QColor color)
QString colorToCss(QColor color)