Я думаю, что это сделает это без любых устанавливаемых переключателей отступа.
:startRange,stopRange s/^/^\t/g
должен добавить пространство вкладки в начале строки между диапазоном номера строки, с которым Вы обеспечиваете
неотступ:
:startRange,stopRange s/^\t/^/g
Расширение ответа Трубадура :
Вот модификация документации QSignalMapper , которая подходит для вашей ситуации:
QSignalMapper* signalMapper = new QSignalMapper(this);
for (each row in table) {
QComboBox* combo = new QComboBox();
table->setCellWidget(row,col,combo);
combo->setCurrentIndex(node.type());
connect(combo, SIGNAL(currentIndexChanged(int)), signalMapper, SLOT(map()));
signalMapper->setMapping(combo, QString("%1-%2").arg(row).arg(col));
}
connect(signalMapper, SIGNAL(mapped(const QString &)),
this, SLOT(changed(const QString &)));
В функции обработчика: : changed (QString position):
QStringList coordinates = position.split("-");
int row = coordinates[0].toInt();
int col = coordinates[1].toInt();
QComboBox* combo=(QComboBox*)table->cellWidget(row, col);
combo->currentIndex()
Обратите внимание, что QString - довольно неуклюжий способ передать эту информацию. Лучшим выбором будет новый QModelIndex, который вы передадите и который измененная функция затем удалит.
Обратной стороной этого решения является то, что вы теряете значение, которое испускает currentIndexChanged, но вы можете запросить QComboBox для его индекса из: : изменено.
Думаю, вы хотите взглянуть на QSignalMapper. Это звучит как типичный вариант использования этого класса, то есть у вас есть набор объектов, каждый из которых подключается к одному и тому же сигналу, но вы хотите знать, какой объект излучает сигнал.