QListWidget :: setEditTriggers(QAbstractItemView :: AnyKeyPressed)不起作用

sas*_*alm 6 c++ qt qlistwidget

从我正在阅读的书中:

默认情况下,QListWidget是只读的.如果我们希望用户编辑项目,我们可以使用QAbstractItemView :: setEditTriggers()设置视图的编辑触发器; 例如,QAbstractItemView :: AnyKeyPressed的设置意味着用户可以通过开始键入来开始编辑项目.

所以,我在我的代码中调用该函数:

ui->listWidget->setEditTriggers(QAbstractItemView::AnyKeyPressed);
Run Code Online (Sandbox Code Playgroud)

但是当我选择一个项目并开始输入时,没有任何反应.

sas*_*alm 7

事实证明,项目本身也有一个可编辑的标志,所以在添加它们之后我必须迭代它们并设置它.现在它正在运作.

// 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);
Run Code Online (Sandbox Code Playgroud)