diff --git a/SCHNApps/include/colorComboBox.h b/SCHNApps/include/colorComboBox.h new file mode 100644 index 0000000000000000000000000000000000000000..d17043d19859112cdaa483745f9dc8b1b64fb37e --- /dev/null +++ b/SCHNApps/include/colorComboBox.h @@ -0,0 +1,28 @@ +#ifndef _COLORCOMBOBOX_H +#define _COLORCOMBOBOX_H + +#include + +class QColor; +class QWidget; + +class ColorComboBox : public QComboBox +{ + Q_OBJECT + Q_PROPERTY(QColor color READ color WRITE setColor USER true) + +public: + QColor color() const; + void setColor(QColor c); + +public: + ColorComboBox(QWidget *widget = 0); + +private: + void populateList(); + +public slots: + void slotHighlight(int index); +}; + +#endif diff --git a/SCHNApps/src/colorComboBox.cpp b/SCHNApps/src/colorComboBox.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d840ac5bc378e68344c6b329a71ca3469a224b7f --- /dev/null +++ b/SCHNApps/src/colorComboBox.cpp @@ -0,0 +1,52 @@ +#include + +#include "colorComboBox.h" + +ColorComboBox::ColorComboBox(QWidget *widget) : QComboBox(widget) +{ + //connect( this, SIGNAL(highlighted(int)), this, SLOT(slotHighlight(int)) ); + populateList(); +} + +QColor ColorComboBox::color() const +{ + return qvariant_cast(itemData(currentIndex(), Qt::DecorationRole)); +} + +void ColorComboBox::setColor(QColor color) +{ + setCurrentIndex(findData(color, int(Qt::DecorationRole))); +} + +void ColorComboBox::populateList() +{ + //QStringList colorNames = QColor::colorNames(); + QStringList colorNames; + colorNames << + "red" << + "green" << + "blue" << + "cyan "<< + "magenta" << + "yellow" << + "gray" << + "white" << + "black"; + + for (int i = 0; i < colorNames.size(); ++i) + { + QColor color(colorNames[i]); + insertItem(i, colorNames[i]); + setItemData(i, color, Qt::DecorationRole); + } +} + +void ColorComboBox::slotHighlight(int index) +{ + const QStringList colorNames = QColor::colorNames(); + QColor color(colorNames.at(index)); + + QPalette palette = this->palette(); + palette.setColor(QPalette::Highlight, color); + setPalette(palette); +}