26 #include <QtWidgets/QColorDialog>
30 QStringList colorNames = QColor::colorNames();
31 for (
int i = 0; i < colorNames.size(); ++i) {
32 QColor
color(colorNames[i]);
33 insertItem(i, colorNames[i]);
34 setItemData(i, color, Qt::DecorationRole);
36 addItem(tr(
"Custom"), QVariant((
int)QVariant::UserType));
37 connect(
this, SIGNAL(currentIndexChanged(
int)),
this, SLOT(currentChanged(
int)));
56 setCurrentIndex(findData(color,
int(Qt::DecorationRole)));
57 if (currentIndex() == -1)
59 addItem(color.name());
60 setItemData(count()-1, color, Qt::DecorationRole);
61 setCurrentIndex(count()-1);
65 void ColorCombo::currentChanged(
int index)
67 if (itemData(index).isValid() && itemData(index) == QVariant((
int)QVariant::UserType))
69 QColor
color = QColorDialog::getColor(m_init,
this);
72 if (findData(color,
int(Qt::DecorationRole)) == -1)
74 addItem(color.name());
75 setItemData(count()-1, color, Qt::DecorationRole);
77 setCurrentIndex(findData(color,
int(Qt::DecorationRole)));
80 setCurrentIndex(findData(m_init));
ColorCombo(QWidget *parent=0)