python - 如何在没有 setIndexWidget 的情况下将 Widget 设置为 QAbstractTableModel 数据?
问题描述
我想在 QTableView 的第一行和第一列中插入一个 QRadioButton。我可以用 setIndexWidget 做到这一点。是否可以在 QAbstractTableModel.data 中设置 Widget 数据?
from PyQt5 import QtWidgets
from PyQt5 import QtCore
import sys
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, datas, parent=None):
super(TableModel, self).__init__(parent)
self._datas = datas
def data(self, index, role=None):
if role == QtCore.Qt.DisplayRole:
return self._datas[index.row()][index.column()]
def rowCount(self, parent=None, *args, **kwargs):
return len(self._datas)
def columnCount(self, parent=None, *args, **kwargs):
return len(self._datas[0])
class MyQTableView(QtWidgets.QTableView):
def __init__(self, parent=None):
super(MyQTableView, self).__init__(parent)
radio = QtWidgets.QRadioButton()
class MainQ(QtWidgets.QWidget):
def __init__(self):
super(MainQ, self).__init__()
self.btn = QtWidgets.QPushButton('OK')
self.view = MyQTableView(self)
radio = QtWidgets.QRadioButton()
self.model = TableModel([(radio,), ("b",), ("c",)])
self.view.setModel(self.model)
self.ly = QtWidgets.QVBoxLayout()
self.ly.addWidget(self.view)
self.setLayout(self.ly)
app = QtWidgets.QApplication(sys.argv)
table = MainQ()
table.show()
sys.exit(app.exec_())
解决方案
推荐阅读
- angular - 通过@Input 将数据传递给子节点与从服务或存储中检索
- python - 管道和子流程模块有什么区别?
- swift - 如何快速制作一个空对象
- c# - 单击按钮时的基本增量
- vba - 如何根据我输入的特定项目从表中返回多个值?
- vue.js - 当数据位于计算字段中时,如果数据已加载,则会收到通知
- javascript - 在 Testcafe 中使用隐藏输入上传文件
- oracle - 登录到 docker hub,但无法拉取 Oracle Instant Client 映像
- javascript - 通过Datang循环到Sheet A上的X行中的s,看看它是否与Sheet B的X行中的数据匹配,如果是,则需要从相邻单元格中获取数据
- python - 如何修复“io.UnsupportedOperation: File not open for writing”错误?