#include "comboboxdelegate.h" #include <QFileDialog> #pragma execution_character_set("utf-8") 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;i<m_labels.size();++i){ cbb->addItem(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); } }