6 #include <QtGui/QPushButton>
7 #include <QtGui/QToolButton>
8 #include <QtGui/QSortFilterProxyModel>
16 QStyledItemDelegate(parent),
19 mButtonType(buttonType),
27 QStyledItemDelegate(parent),
30 mButtonType(buttonType),
38 const QStyleOptionViewItem & ,
39 const QModelIndex & index)
const
41 QModelIndex SourceIndex = index;
42 const QAbstractItemModel *pModel = index.model();
44 while (pModel->inherits(
"QSortFilterProxyModel"))
46 SourceIndex =
static_cast< const QSortFilterProxyModel *
>(pModel)->mapToSource(index);
47 pModel = SourceIndex.model();
50 QAbstractButton * pEditor;
53 Data = SourceIndex.model()->data(SourceIndex, Qt::UserRole);
55 if (Data.type() == QVariant::Icon)
57 mIcon = Data.value< QIcon >();
63 pEditor =
new QPushButton(
mIcon,
mText, parent);
67 pEditor =
new QToolButton(parent);
71 Data = SourceIndex.model()->data(SourceIndex, Qt::DisplayRole);
73 if (Data.type() == QVariant::String)
75 mText = Data.toString();
78 pEditor->setText(
mText);
82 pEditor->setIcon(
mIcon);
91 connect(pEditor, SIGNAL(destroyed(QObject *)),
this, SLOT(
slotEditorDeleted(QObject *)));
98 QString value = index.model()->data(index, Qt::EditRole).toString();
99 QPushButton * pButton =
static_cast< QPushButton *
>(pEditor);
101 if (pButton->icon().isNull())
103 pButton->setText(value);
109 QAbstractItemModel * ,
110 const QModelIndex & )
const
114 const QStyleOptionViewItem & option,
115 const QModelIndex & )
const
117 pEditor->setGeometry(option.rect);
122 QAbstractButton * pEditor =
dynamic_cast< QAbstractButton *
>(sender());
126 QMap< QAbstractButton *, QModelIndex >::const_iterator found =
mEditorToIndex.find(pEditor);
137 QAbstractButton * pEditor =
dynamic_cast< QAbstractButton *
>(sender());