-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcombodelegate.cpp
53 lines (45 loc) · 1.73 KB
/
combodelegate.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "combodelegate.h"
#include "color_wheel.hpp"
#include <QDebug>
#include <QSettings>
#include <QStandardPaths>
ComboDelegate::ComboDelegate(QObject *parent) : QStyledItemDelegate(parent)
{
}
QWidget* ComboDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QComboBox *combo = new QComboBox(parent);
combo->setFrame(false);
combo->setStyleSheet("QComboBox { border: none; opacity: 0; }");
QMap<QString, QVariant> map = getColours();
for (QMap<QString, QVariant>::iterator it = map.begin() ; it!=map.end() ; it++)
{
combo->addItem(it.key(), it.value().toString());
}
return combo;
}
void ComboDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
QString value = index.data(Qt::EditRole).toString();
QComboBox *combo = static_cast<QComboBox*>(editor);
combo->setCurrentIndex(combo->findData(value));
}
void ComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
QComboBox *combo = static_cast<QComboBox*>(editor);
model->setData(index, combo->currentData(), Qt::EditRole);
}
void ComboDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
editor->setGeometry(option.rect);
}
QString ComboDelegate::displayText(const QVariant &value, const QLocale &locale) const
{
return getColours().key(value);
}
QMap<QString, QVariant> ComboDelegate::getColours()
{
QSettings *settings = new QSettings(QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation).at(1) + "/settings.ini", QSettings::IniFormat);
QMap<QString, QVariant> map = settings->value("colours").toMap();
return map;
}