Я пытаюсь создать табличное представление со строкой, в которой для каждого столбца есть отдельный раскрывающийся список. Пользователь может выбрать только комбинацию значений. То есть, если пользователь выбирает «A» в первом раскрывающемся списке, значения в других раскрывающихся списках должны быть обновлены до значений, которые могут соответствовать «A».
Я создал свой класс AbsractItemDelegate, и значения присваиваются нормально. Но я застрял в том, как я могу вызвать событие, когда значение изменяется в одном из раскрывающихся списков.
Спасибо.
Ниже приведена реализация моего класса делегата:
FillComboBox::FillComboBox(QStringList the_list) : QItemDelegate() {
//list = new QStringList();
list = the_list; }
QWidget* FillComboBox::createEditor(QWidget* parent,
const QStyleOptionViewItem& /* option */,
const QModelIndex& /* index */) const {
QComboBox* editor = new QComboBox(parent);
editor->addItems(list);
editor->setCurrentIndex(2);
return editor; }
void FillComboBox::setEditorData(QWidget* editor,
const QModelIndex &index) const {
QString text = index.model()->data(index, Qt::EditRole).toString();
QComboBox* combo_box = dynamic_cast<QComboBox*>(editor);
combo_box->setCurrentIndex(combo_box->findText(text)); }
void FillComboBox::setModelData(QWidget* editor, QAbstractItemModel* model,
const QModelIndex &index) const {
QComboBox* combo_box = dynamic_cast<QComboBox*>(editor);
QString text = combo_box->currentText();
model->setData(index, text, Qt::EditRole); }
void FillComboBox::updateEditorGeometry(QWidget* editor,
const QStyleOptionViewItem &option, const QModelIndex &/* index */) const {
editor->setGeometry(option.rect); }