Я не совсем уверен, чего вы пытаетесь достичь, но, возможно, вы ищете ItemDelegate
, который можно установить для определенных строк или столбцов, но не для конкретного элемента внутри таблицы. Возможно, опубликованное решение поможет вам создать минимальные воспроизводимые примеры.
#include <QApplication>
#include <QComboBox>
#include <QDebug>
#include <QTableWidget>
#include <QStyledItemDelegate>
class ComboBoxDelegate : public QStyledItemDelegate{
public:
virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
auto s = new QComboBox(parent);
s->insertItem(1, "First");
s->insertItem(2, "Second");
return s;
}
};
int main(int argc, char** args) {
QApplication app(argc, args);
auto table = new QTableWidget;
table->setRowCount(2);
table->setColumnCount(2);
table->setItemDelegateForColumn(0, new ComboBoxDelegate);
auto s = new QComboBox;
s->insertItem(1, "First");
s->insertItem(2, "Second");
table->setCellWidget(1, 1, s);
QObject::connect(table, &QTableWidget::itemChanged, [&](QTableWidgetItem* item) {
qDebug() << item->row();
});
table->show();
app.exec();
}