Выбор QComboBox в QTableWidget

Я думаю, что это сделает это без любых устанавливаемых переключателей отступа.

:startRange,stopRange s/^/^\t/g

должен добавить пространство вкладки в начале строки между диапазоном номера строки, с которым Вы обеспечиваете

неотступ:

:startRange,stopRange s/^\t/^/g
15
задан demonplus 3 November 2015 в 08:38
поделиться

2 ответа

Расширение ответа Трубадура :

Вот модификация документации 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 для его индекса из: : изменено.

7
ответ дан 1 December 2019 в 03:52
поделиться

Думаю, вы хотите взглянуть на QSignalMapper. Это звучит как типичный вариант использования этого класса, то есть у вас есть набор объектов, каждый из которых подключается к одному и тому же сигналу, но вы хотите знать, какой объект излучает сигнал.

2
ответ дан 1 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: