Как запустить режим редактирования элемента в QTableView? - PullRequest
8 голосов
/ 10 сентября 2010

Я сейчас использую QTableView и QStandardItemModel.

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

Теперь у меня проблема, я хочу активировать режим редактирования элемента по коду (по команде), что мне делать? Я не могу найти правильную функцию или слот в QTableView или QStandardItemModel. Нужно ли испускать какой-либо сигнал, чтобы войти в режим редактирования?

И какой сигнал мне нужно поймать, если я хочу знать, когда редактирование закончится (пользователь нажимает «Enter» или нажимает другие элементы, чтобы выйти из режима редактирования)

Спасибо за вашу помощь

Ответы [ 2 ]

12 голосов
/ 10 сентября 2010

у вас должна быть возможность использовать метод редактирования класса QAbstractItemView для запуска редактирования для данного модельного индекса.

Просьба посмотреть, подойдет ли вам приведенный ниже пример:

QModelIndex index = ui->tableView->model()->index(0, 0, QModelIndex());
ui->tableView->edit(index);

надеюсь, это поможет, с уважением

8 голосов
/ 10 сентября 2010

См .:

void QAbstractItemView::edit ( const QModelIndex & index ) [slot]
void QAbstractItemView::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) [virtual protected slot]
void QAbstractItemView::editorDestroyed ( QObject * editor )   [virtual protected slot]
...