tablemodel如何使用QAbstractItemView::SelectRows
时间: 2023-08-02 07:12:21 浏览: 98
jsp 开发之struts2中s:select标签的使用
`QAbstractItemModel`是`QTableView`控件中显示数据的模型,`QAbstractItemView::SelectRows`是用于设置`QTableView`中选择行为的枚举值。因此,我们可以在`QAbstractItemModel`的子类中重写`flags()`函数,返回每个单元格的标志位,来实现选择行为的设置。
例如,以下代码演示了如何在`QStandardItemModel`中使用`QAbstractItemView::SelectRows`:
```cpp
QStandardItemModel *model = new QStandardItemModel(this);
model->setRowCount(3);
model->setColumnCount(2);
for (int row = 0; row < 3; ++row) {
for (int col = 0; col < 2; ++col) {
QModelIndex index = model->index(row, col, QModelIndex());
model->setData(index, QString("row%1, col%2").arg(row + 1).arg(col + 1));
}
}
// 返回每个单元格的标志位
Qt::ItemFlags flags(const QModelIndex &index) const override {
if (!index.isValid())
return Qt::NoItemFlags;
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
QTableView *tableView = new QTableView(this);
tableView->setModel(model);
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
```
在上述代码中,我们重写了`flags()`函数,返回了`Qt::ItemIsEnabled | Qt::ItemIsSelectable`标志位,表示单元格既可以被选择,也可以被编辑。这样,我们在设置`QTableView`的选择行为时,就可以让它根据模型中的标志位来选择行了。
阅读全文