wumu
2024-11-26 5efd96cc316f8a704f0f6315b85078b738ddee04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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);
    }
}