Я ищу чистый способ реагировать на событие, если QTableWidgetItem
изменил его текст. Я пытался использовать сигнал QTableWidget::itemChanged(QTableWidgetItem *item)
, но это вызывает ошибку из-за того, что я изменяю цвет фона QTableWidgetItem
в моем слоте, и этот слот затем выполняется рекурсивно, потому что itemChanged.
Я также пытался использовать сигнал QTableWidget::itemEntered(QTableWidgetItem *item)
, но это связано с некоторыми событиями мыши, которые на самом деле не работают для меня.
Последний метод, который я попробовал, - переопределить фильтр событий в моем пользовательском классе QTableWidget, например:
bool custom_DropTable::eventFilter(QObject *obj, QEvent *evt)
{
if (evt->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(evt);
if (keyEvent->key() == Qt::Key_Return)
{
emit si_itemTextEntered(this->currentItem());
return true;
}
else
{
return false;
}
}
else
{
return QObject::eventFilter(obj, evt);
}
}
Но сигнал на самом деле никогда не приходит, даже если нажать enter, поэтому установите текст.
Есть ли у кого-нибудь какие-либо предложения или улучшения для меня?