#include "tablewidget.h" tableWidget::tableWidget(QWidget *parent): QTableWidget(parent) { } void tableWidget::mouseReleaseEvent(QMouseEvent *event) { if(event->button() == Qt::RightButton) { QMenu menu; QAction *insert= menu.addAction("Insert Item"); QAction *add= menu.addAction("Add Item"); QAction *del = menu.addAction("Delete Item"); QAction *selectedAction = menu.exec(event->globalPosition().toPoint()); if(selectedAction == insert) { this->insertRow(this->currentRow()); } else if(selectedAction == add) { this->insertRow(this->rowCount()); } else if( selectedAction == del ) { this->removeRow(this->currentRow()); } } } tableCombobox::tableCombobox(QAbstractItemModel* model, bool sort, QObject *parent) : QItemDelegate(parent), modelData(model) { if (sort) modelData->sort(0); } QWidget* tableCombobox::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(index) Q_UNUSED(option) QComboBox* comboBox = new QComboBox(parent); comboBox->setModel(modelData); return comboBox; } void tableCombobox::setEditorData(QWidget *editor, const QModelIndex &index) const { // update model widget QString value = index.model()->data(index, Qt::EditRole).toString(); qDebug() << "Value:" << value; QComboBox* comboBox = static_cast(editor); comboBox->setCurrentIndex(comboBox->findText(value)); } void tableCombobox::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { // store edited model data to model QComboBox* comboBox = static_cast(editor); QString value = comboBox->currentText(); model->setData(index, value, Qt::EditRole); } void tableCombobox::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(index) editor->setGeometry(option.rect); } tableCheckbox::tableCheckbox(QObject *parent) : QItemDelegate(parent) { } QWidget* tableCheckbox::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(index) Q_UNUSED(option) QCheckBox* checkBox = new QCheckBox(parent); return checkBox; } void tableCheckbox::setEditorData(QWidget *editor, const QModelIndex &index) const { // update model widget bool value = index.model()->data(index, Qt::EditRole).toBool(); qDebug() << "Value:" << value; QCheckBox* checkBox = static_cast(editor); checkBox->setEnabled(value); } void tableCheckbox::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { // store edited model data to model QCheckBox* checkBox = static_cast(editor); bool value = checkBox->isChecked(); model->setData(index, value, Qt::EditRole); } void tableCheckbox::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(index) editor->setGeometry(option.rect); }