#include "comboboxdelegate.h" #include ComboBoxDelegate::ComboBoxDelegate(QStringList labels,QObject *parent,bool edit) :QItemDelegate(parent), m_labels(labels), m_edit(edit) { } QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { QComboBox *cbb = new QComboBox(parent); cbb->setEditable(m_edit); for(int i=0;iaddItem(m_labels.at(i)); } return cbb; } void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { if(m_edit){// 可编辑状态 int idx = ((QComboBox*)editor)->currentIndex(); if(idx == 1){ // 需要上传 QString fileName = QFileDialog::getOpenFileName(); model->setData(index,fileName); }else if(idx == 0){ // 录入 ; }else{ QString val = ((QComboBox*)editor)->currentText(); model->setData(index,val); } }else{ QString val = ((QComboBox*)editor)->currentText(); model->setData(index,val); } }