QTableWidget: не окрашиваются строки при выделении selectRow(i)

В таблице с выделением строк по сочетанию клавиш Key_Home и Shift хочу выделить строки с текущей вверх - по нулевую. Выделение происходит, как показывают дальнейшие действия, но на экране это выделение не отображается, как обычно при выделении строк вручную по одной. Фрагменты кода:

//--------------------------------------------------
//  mainwindow.h
...
class MainWindow : public QDialog
{
    Q_OBJECT
...
 
 protected:
   bool eventFilter(QObject* object, QEvent* event);
...
}
 
//--------------------------------------------------
//  mainwindow.cpp
 
...
 
MainWindow::MainWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
...
    ui->table->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->table->installEventFilter(this);
...
}
 
bool MainWindow::eventFilter(QObject* object, QEvent* event)
{
    if (!ui->table->hasFocus()) return false;
    if (event->type() == QEvent::KeyPress)
    {
      QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
      if (keyEvent->key() == Qt::Key_Home && (keyEvent->modifiers() & Qt::ShiftModifier) && ui->table->currentRow() >= 0)
      {
        for (int i = ui->table->currentRow(); i >= 0; --i)
        {
          ui->table->selectRow(i);
        }
        ui->table->setCurrentCell(0, 0);
      }
    }
    return QWidget::eventFilter(object, event);
}

Как окрасить строки при использовании функции selectRow(i)?

...

Вопрос решён, благодаря needKVAS, см. комментарии.


Ответы (0 шт):