c++实现QTableView中放入QLineEdit默认不可以编辑,双击后才可以编辑,不重写实现
时间: 2024-03-06 12:46:45 浏览: 79
PyQt5 QTableView设置某一列不可编辑的方法
可以通过在 `QTableView` 的 `edit` 信号和 `openPersistentEditor` 函数结合使用来实现默认不可编辑,双击后可编辑的效果,而不需要自定义 `QStyledItemDelegate` 类。具体实现可以参考以下示例代码:
```c++
QTableView *tableView = new QTableView();
QStandardItemModel *model = new QStandardItemModel(3, 3);
tableView->setModel(model);
tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); // 设置默认不可编辑
connect(tableView, &QTableView::doubleClicked, [=](const QModelIndex &index) {
tableView->openPersistentEditor(index); // 双击后打开编辑器
});
```
在上述代码中,首先创建了一个名为 `tableView` 的 `QTableView` 对象,并通过 `setModel` 函数将其与一个名为 `model` 的 `QStandardItemModel` 对象关联起来。然后通过 `setEditTriggers` 函数将 `tableView` 的编辑触发器设置为 `NoEditTriggers`,即默认情况下该表格不可编辑。
最后通过 `connect` 函数连接了 `tableView` 的 `doubleClicked` 信号和一个 lambda 表达式。该 lambda 表达式中调用了 `tableView` 的 `openPersistentEditor` 函数,并传入了双击的单元格的索引 `index`,这样当用户双击该单元格时,就会打开该单元格的编辑器,从而实现了默认不可编辑,双击后可编辑的效果。
阅读全文