так то оно так.
но есть нюанс
Уточню задачу:
на форме есть QTableView(), при входе в форму модель привязанная к виеву пуста.
есть код:
bool CashePayment::eventFilter(QObject * obj, QEvent * event)
{
if (obj == chequePaymantsView && event->type() == QEvent::FocusIn)
{
if(!PaymentModel->rowCount())
{
PaymentModel->insertRows(0,1);
chequePaymantsView->setCurrentIndex (PaymentModel->index(0,0));
}
}
else if (obj == chequePaymantsView && event->type() == QEvent::FocusOut)
{
PaymentModel->deleteEmpty();
}
когда фокус попадает в виев в модели создается строка, когда модель теряет фокус и пользователь не ввел данных пустая запись из модели удаляется. И все было бы класно но как только пытаешся изменить данные фокус переходит к делегату и запись удаляется из модели, получается бардак
добавлено спустя 6 часов 33 минуты: Кажись поборол
Если кому понадобится надо так:
bool CashePayment::eventFilter(QObject * obj, QEvent * event)
{
if (obj == chequePaymantsView && event->type() == QEvent::FocusIn)
{
if(!PaymentModel->rowCount())
{
PaymentModel->insertRow(0);
}
chequePaymantsView->setCurrentIndex (PaymentModel->index(PaymentModel->rowCount()-1,0));
}
else if (obj == chequePaymantsView
&& event->type() == QEvent::FocusOut
&& static_cast<QFocusEvent*>(event)->reason() != Qt::OtherFocusReason )
{
PaymentModel->deleteEmpty();
chequePaymantsView->selectionModel()->clear();
}
// standard event processing
return QObject::eventFilter(obj, event);
}