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, см. комментарии.