#ifndef DELEGATE_H #define DELEGATE_H #include #include #include #include #include #include class checkStateComboBox : public QComboBox { Q_OBJECT public: checkStateComboBox( QStringList l_items = QStringList(), QWidget * parent = 0 ) : QComboBox(parent) { Model = new QStandardItemModel; setModel(Model); for(int i=0; isetText(l_items.at(i)); Item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); Item->setData(Qt::Checked, Qt::CheckStateRole); Model->insertRow(Model->rowCount(), Item); Items.push_back(Item); } connect(Model, SIGNAL( itemChanged(QStandardItem*) ), this, SLOT(itemChanged(QStandardItem*) ) ); } ~checkStateComboBox(){} void addItem(QString &text, Qt::CheckState checkState = Qt::Unchecked) { QStandardItem* Item = new QStandardItem; Item->setText(text); Item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); Item->setData(checkState, Qt::CheckStateRole); Model->insertRow(Model->rowCount(), Item); Items.push_back(Item); } void addItems(QStringList& list, Qt::CheckState checkState = Qt::Unchecked) { foreach (QString itemData, list) { addItem(itemData, checkState); } } const QVector& getItems() const { return Items; } const QStandardItem* getItem(const int& index) const { if ( Items.size() <= index ) return NULL; return Items.at(index); } protected: QStandardItemModel* Model; QVector Items; public slots: void itemChanged(QStandardItem* /*item*/) { //qDebug() << "Item checked....."; } }; //Delegate class class propertyItemDelegate : public QItemDelegate { Q_OBJECT public: propertyItemDelegate(QObject *parent=0); QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; void setEditorData(QWidget *editor, const QModelIndex &index) const Q_DECL_OVERRIDE; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const Q_DECL_OVERRIDE; void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; QStringList m_testList; }; #endif // DELEGATE_H