Files
newspark110/device/workfileedit/comboboxdelegate.cpp
Chenwenxuan edac2715f0 init
2024-03-06 14:54:30 +08:00

113 lines
3.2 KiB
C++

#include "comboboxdelegate.h"
#include <QComboBox>
#include "QStringListModel"
ComboBoxDelegate::ComboBoxDelegate(QObject *parent)
: QItemDelegate(parent)
{
}
ComboBoxDelegate::~ComboBoxDelegate()
{
}
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QItemDelegate::paint(painter, option, index);
}
QSize ComboBoxDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
return QItemDelegate::sizeHint(option, index);
}
QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (index.isValid() && index.column() == COMBOXCOL)
{
QComboBox *editor = new QComboBox(parent);
editor->setEditable(true);
editor->installEventFilter(const_cast<ComboBoxDelegate *>(this));
return editor;
}
else
{
return QItemDelegate::createEditor(parent, option, index);
}
}
void ComboBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
if (index.isValid() && index.column() == COMBOXCOL)
{
QString value = index.model()->data(index, Qt::DisplayRole).toString();
// QStringListModel* model = new QStringListModel;
// QStringList stringlist;
// stringlist << "Test1" << "Test2" << "Test3";
// model->setStringList(stringlist);
// ui->comboBox->setModel(model);
QComboBox *combox = static_cast<QComboBox *>(editor);
combox->addItem("上料");
combox->addItem("下料");
combox->addItem("功率测量");
combox->addItem("对零");
combox->addItem("寻边");
combox->addItem("扫描");
combox->addItem("打标");
combox->addItem("加工");
combox->addItem("晶锭预测量");
combox->addItem("小面加工");
combox->addItem("DD马达");
combox->setCurrentText(value);
//combox->setEditable(false);
}
else
{
QItemDelegate::setEditorData(editor, index);
}
}
void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
if (index.isValid() && index.column() == COMBOXCOL)
{
QComboBox *combox = static_cast<QComboBox *>(editor);
model->setData(index, combox->currentText());
int row = model->rowCount();
for (int i = 0; i < row; i++)
{
QModelIndex index = model->index(i, 0);
QModelIndex index1 = model->index(i, 1);
QModelIndex index2 = model->index(i, 2);
QString strValue = model->data(index).toString();
if (strValue != "加工")
{
model->setData(index2, "");
}
if ((strValue == "加工") || (strValue == "功率测量") || (strValue == "DD马达"))
{
}
else
{
model->setData(index1, "");
}
}
}
else
{
QItemDelegate::setModelData(editor, model, index);
}
}