2016-10-15 9 views
1

Окружающая среда:qt QTableWidget programattic select of cell - как готовиться с курсором?

  • Qt 4.7.1
  • Qt Creator 2.1.0
  • C++

Проблема:

У меня есть QTableWidget. Я добавляю строку, а затем выбираю первую ячейку.

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

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

Все, что я нашел до сих пор, касается поведения выбора, которое связано с выборами строк, столбцов или ячеек; ничего о том, что выбор ячейки фактически делает.

Вот мой код до сих пор работает как описано; rc является индекс последней строки, уже определены:

ui->thetable->scrollToBottom(); 
QModelIndex index = ui->thetable->model()->index(rc, 0); 
ui->thetable->selectionModel()->select(index,QItemSelectionModel::Select); 
+0

Попробуйте использовать ['setEditTriggers'] (https://doc.qt.io/qt-5/qabstractitemview.html#editTriggers-prop), чтобы инициировать редактирование всякий раз, когда текущий элемент изменяется. Что-то вроде этого, 'ui-> thetable-> setEditTriggers (QAbstractItemView :: CurrentChanged);' – Mike

+0

@Mike Но это разрешило бы всегда иметь ячейки в режиме редактирования. Даже если пользователь просто выбирает элемент, который он получает в режиме редактирования. Я думаю, он хотел, чтобы это произошло только при программном выборе. –

+0

@ luca-angioloni - это правильно; теперь, если бы я мог только заставить порядок табуляции вести себя после запрограммированного выбора - клавиша TAB переходит в BACKWARDS с одной до последней предыдущей строки. Поэтому я ввожу первые данные, а затем нажмите TAB, а затем я попал в неправильную ячейку. Он работает правильно (всегда TABS вправо/вперед), если вы наводите мышь вместо открытого редактирования через программу. – fyngyrz

ответ

3

Вы можете использовать метод редактировать этот путь:

ui->thetable->edit(index); 

с использованием индекса вы уже вычисленной, или вы можете подключить пользовательский сигнал ваш до void QAbstractItemView::edit (const QModelIndex & index) слот, унаследованный элементами QTableWidget.

+0

Первый идеальный. Кроме того, большой ответ: кратким и точным. – fyngyrz

+0

@fyngyrz Спасибо –