Как в QT5 в QTableWidget из делегата изменить значение в ячейке из другой колонки?

162
24 октября 2018, 11:40

Задача следующая: ComboBoxDelegate задает точность и шаг приращения в другой колонке той же строки, но с DoubleSpinBoxDelegate. Проблема в том, что если изменить точность в более грубую сторону, то значение в ячейках из других колонок той же строки надо автоматически округлить. Например есть значение 29.99999 при точности 0.00001, изменили точность до 0.0001 и значение автоматически должно стать 29.99990 (значение 30 - это уже за пределами диапазона). Ниже приведен метод делегата:

void ComboBoxStepFreqDelegate::setEditorData( QWidget * editor, const QModelIndex &index) const
{
int value = index.model()->data( index, Qt::EditRole ).toInt();
QComboBox * cb = static_cast<QComboBox*>( editor );
int idx = cb->findData( value );
if ( idx < 0 ) return;
cb->setCurrentIndex( idx );
int tmp = index.model()->data(index, Qt::DisplayRole).toInt();
int shift;
switch (tmp)
    {
    case step10:
        shift = 100000;
        break;
    case step100:
        shift = 10000;
        break;
    default:
        shift = 1000000;
    }
QModelIndex tFreqIndex = index.sibling(index.row(), FREQ_TX);
QModelIndex rFreqIndex = index.sibling(index.row(), FREQ_RX);
double valt = tFreqIndex.model()->data(tFreqIndex, Qt::DisplayRole).toDouble();
double valr = rFreqIndex.model()->data(rFreqIndex, Qt::DisplayRole).toDouble();
valt = floor(valt * shift) / shift;
valr = floor(valr * shift) / shift;
// --- эти две строки выдают ошибку компиляции ---
tFreqIndex.model()->setData(tFreqIndex, valt, Qt::EditRole);
rFreqIndex.model()->setData(rFreqIndex, valr, Qt::EditRole);
//------------------------------------------------
}

Вопрос - как записать сформированные данные в ячейки, поскольку я пока не разобрался?

READ ALSO
Вызов перегруженной функции - Segmentation fault

Вызов перегруженной функции - Segmentation fault

При вызове Func() заполняется buffer данными из сокета, после происходит их конвертация в класс DerivedЕсли после конвертаци вызвать функию Foo(), то происходит...

154
Ошибка при вызове деструктора

Ошибка при вызове деструктора

помогите разобраться с проблемой, она довольно распространенная и на форуме куча сообщений про это но в моей программе я никак не могу найти...

175