4
* Created on: 1-Feb-2009
10
#include "widget/hexspinbox.h"
11
#include "midinodelegate.h"
13
MidiNoDelegate::MidiNoDelegate(QObject *parent)
14
: QItemDelegate(parent)
18
void MidiNoDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
19
const QModelIndex &index) const
21
if (index.data().canConvert<int>()) {
22
int midino = index.data().value<int>();
24
if (option.state & QStyle::State_Selected)
25
painter->fillRect(option.rect, option.palette.highlight());
27
QString text = QString("0x") + QString("%1").arg(midino,
28
2, //Field width (makes "F" become "0F")
30
QLatin1Char('0')).toUpper();
32
painter->drawText(option.rect, text, QTextOption(Qt::AlignCenter));
33
//Note that Qt::AlignCenter does both vertical and horizontal alignment.
35
QItemDelegate::paint(painter, option, index);
39
QWidget *MidiNoDelegate::createEditor(QWidget *parent,
40
const QStyleOptionViewItem &/* option */,
41
const QModelIndex & index ) const
43
HexSpinBox *editor = new HexSpinBox(parent);
44
editor->setMinimum(0);
45
editor->setMaximum(127);
50
void MidiNoDelegate::setEditorData(QWidget *editor,
51
const QModelIndex &index) const
53
int value = index.model()->data(index, Qt::EditRole).toInt();
55
HexSpinBox *spinBox = static_cast<HexSpinBox*>(editor);
56
spinBox->setValue(value);
57
spinBox->interpretText();
60
void MidiNoDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
61
const QModelIndex &index) const
63
HexSpinBox *spinBox = static_cast<HexSpinBox*>(editor);
64
spinBox->interpretText();
65
int value = spinBox->value();
67
model->setData(index, value, Qt::EditRole);
70
void MidiNoDelegate::updateEditorGeometry(QWidget *editor,
71
const QStyleOptionViewItem &option,
72
const QModelIndex &/* index */) const
74
editor->setGeometry(option.rect);