From b11ad2bb1946cf5356037f7a16e4e42558fd955e Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期五, 10 五月 2024 22:37:52 +0800
Subject: [PATCH] 0510

---
 internal_system_v1/comboboxdelegate.cpp |   26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/internal_system_v1/comboboxdelegate.cpp b/internal_system_v1/comboboxdelegate.cpp
index e5fde68..460506c 100644
--- a/internal_system_v1/comboboxdelegate.cpp
+++ b/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);
+    }
 }

--
Gitblit v1.8.0