wumu
2024-05-10 b11ad2bb1946cf5356037f7a16e4e42558fd955e
internal_system_v1/comboboxdelegate.cpp
@@ -1,8 +1,10 @@
#include "comboboxdelegate.h"
#include <QFileDialog>
ComboBoxDelegate::ComboBoxDelegate(QStringList labels,QObject *parent)
ComboBoxDelegate::ComboBoxDelegate(QStringList labels,QObject *parent,bool edit)
    :QItemDelegate(parent),
      m_labels(labels)
      m_labels(labels),
      m_edit(edit)
{
}
@@ -10,6 +12,7 @@
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));
    }
@@ -18,6 +21,21 @@
void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
    QString val = ((QComboBox*)editor)->currentText();
    model->setData(index,val);
    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);
    }
}