QTableWidgetItem переместить курсор в ячейку (не только для выбора) - PullRequest
0 голосов
/ 18 марта 2020

Моя задача проста. В таблице перейдите к следующей строке после того, как пользователь записал число и нажал клавишу ввода.

У меня есть QTableWidget с событием клавиши , которое получает позицию курсора из сигнала :

connect(ui->table->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), key, SLOT(cell_position(QModelIndex)));

Ключевое событие:

...
if ( (key->key()==Qt::Key_Enter) ) {
...

QTableWidgetItem:

...        
QTableWidgetItem *item = table->item(m_pos, n_pos);
        if(item == nullptr)
            {
             QTableWidgetItem *item = new QTableWidgetItem;
             table->setItem(m_pos, n_pos, item);
             item->setSelected(1);
...

Но это дает мне такое поведение - он выбирает ячейку под в настоящее время введена ячейка. Курсор остается на своем месте.

setSelected behaviour

Пожалуйста, у вас есть какие-либо идеи, как переместить курсор вниз? Я попробовал некоторые методы QTableWidgetItem, но не нашел ни одного подходящего.

Спасибо.

Обновление: вместо

item->setSelected(1);

Я использую

table->setCurrentItem(item);

который делает то, что мне нужно. Он перемещает курсор в ячейку элемента.

1 Ответ

0 голосов
/ 18 марта 2020

Если я правильно понимаю, вы хотите изменить текущий элемент, и вы можете сделать это, вызвав метод QTableWidget::setCurrentItem().

См. QTableWidget :: setCurrentItem

...