QListWidget::setEditTriggers(QAbstractItemView::AnyKeyPressed) не работает

Из книги, которую я читаю:

По умолчанию QListWidget доступен только для чтения. Если бы мы хотели, чтобы пользователь редактировал элементы, мы могли бы установить триггеры редактирования представления, используя QAbstractItemView::setEditTriggers(); например, установка QAbstractItemView::AnyKeyPressed означает, что пользователь может начать редактирование элемента, просто начав печатать.

Итак, я вызываю функцию в своем коде:

ui->listWidget->setEditTriggers(QAbstractItemView::AnyKeyPressed);

Но когда я выбираю элемент и начинаю печатать, ничего не происходит.


person sashoalm    schedule 27.10.2012    source источник


Ответы (1)


Оказывается, сами элементы также имеют флаг editable, поэтому после их добавления мне пришлось перебрать их все и установить его. Теперь это работает.

// set the editable flag for each item
for (int ii = 0; ii < ui->listWidget->count(); ii++) {
    ui->listWidget->item(ii)->setFlags(ui->listWidget->item(ii)->flags() | Qt::ItemIsEditable);
}
// set the editable triggers for the list widget
ui->listWidget->setEditTriggers(QAbstractItemView::AnyKeyPressed);
person sashoalm    schedule 28.10.2012