QSignalMapper и original Sender ()

У меня есть кучаQComboBoxes в таблице. Чтобы я знал, какой из них был запущен, я переназначаю сигнал для кодирования местоположения ячейки таблицы (как описано вВыбор QComboBox в QTableWidget)

(Почему Qt не делаетсначала просто отправьте сигнал, активированный ячейкой, чтобы вы могли использовать тот же текущий механизм строк / столбцов, что и для любой другой функции редактирования ячеек.т знаю.)

Но это удаляет все знания об исходном виджете отправителя. призваниеQComboBox* combo = (QComboBox* )sender() в слот выходит из строя, предположительно потому чтоsender() сейчас.QSignalMapper

Я могу использовать закодированную строку / столбец для поискаQComboBox в виджете таблицы, но это кажется неправильным. Есть ли более правильный способ сделать это?

например.:

// in table creator
_signalMapper = new QSignalMapper(this);

 // for each cell
    QComboBox* combo = new QComboBox();
    connect(combo, SIGNAL(currentIndexChanged(int)), _signalMapper, SLOT(map()));
    _signalMapper->setMapping(combo, row);

   // and finally       
   connect(_signalMapper, SIGNAL(mapped(int)),this, SLOT(changedType(int)));

 // slot
 void myDlg::changedType(int row)
 {      
        QComboBox* combo = (QComboBox* )sender(); // this doesn't work !!
 }

РЕДАКТИРОВАТЬ: Добавлено для дальнейшего поиска: есть новая книга "Расширенное программирование Qt " Марк Саммерфилд, который объясняет, как делать такие вещи.

Ответы на вопрос(2)

Ваш ответ на вопрос