qt vector容器数据显示在tablewidget里并添加勾选框
时间: 2024-03-09 12:47:22 浏览: 121
Qt中的tablewidget 通过分页方式加载大量数据
3星 · 编辑精心推荐
在Qt中,可以使用QCheckBox作为QStandardItem的代理,将其添加到QStandardItemModel中,然后将模型与QTableView相关联,以在表格中显示勾选框。
以下是示例代码:
```python
# 假设有一个名为vec的vector容器,其中每个元素都是QString类型
vec = ["hello", "world", "example"]
# 创建QStandardItemModel对象
model = QtGui.QStandardItemModel()
# 设置表头
model.setHorizontalHeaderLabels(["列1", "列2"])
# 将vector中的元素逐行添加到模型中,并添加勾选框
for i in range(len(vec)):
item = QtGui.QStandardItem(vec[i])
checkBox = QtGui.QCheckBox()
item.setCheckable(True)
model.appendRow([item, checkBox])
# 获取QTableView对象
tableView = QtWidgets.QTableView()
# 将模型与QTableView相关联
tableView.setModel(model)
# 显示QTableView
tableView.show()
```
这段代码将会在QTableView中显示如下内容,并且每行都有一个勾选框:
| 列1 | 列2 |
| --- | --- |
| hello | [ ] |
| world | [ ] |
| example | [ ] |
如果想要获取勾选框的状态,可以使用QStandardItemModel的item方法获取对应项的QStandardItem对象,并使用checkState方法获取勾选状态。
例如,要获取第2行的勾选框状态,可以使用以下代码:
```python
item = model.item(1, 1)
if isinstance(item, QtGui.QStandardItem):
checked = item.checkState()
print(checked)
```
其中,checked的值为Qt.Checked表示勾选状态,为Qt.Unchecked表示未勾选状态。
阅读全文