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