ser*_*mma 6 python pyqt qwidget qtableview pyqt5
这里有张桌子:
tab=QTableView()
sti=QStandardItemModel(parent=None)
sti.appendRow([QStandardItem(str(1)),QStandardItem(str(2)),QStandardItem(str(3)),QStandardItem(str(4))])
tab.setModel(sti)
tab.setEditTriggers(QAbstractItemView.NoEditTriggers)
Run Code Online (Sandbox Code Playgroud)
有一个按钮:
btn=QPushButton('Press', self)
btn.clicked.connect(self.on_clicked)
btn.resize(btn.sizeHint())
Run Code Online (Sandbox Code Playgroud)
任务:如何在 QStandardItem(str(4)) 的表格单元格插入中插入按钮 btn?QTableWidget类有一个方法.setCellWidget(),但我是从QTableView继承的。如果我使用 QTableWidget 我将无法使用私有方法 .setModel()
为了能够插入小部件,您必须使用与单元格关联的 必须作为第一个参数传递的setIndexWidget()方法QModelIndex(),考虑到行和列的索引从 0 开始,对于文本等于str(4)其坐标的项目是0, 3:
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
app.setStyle("fusion")
tab = QTableView()
sti = QStandardItemModel()
sti.appendRow([QStandardItem(str(i)) for i in range(4)])
tab.setModel(sti)
tab.setEditTriggers(QAbstractItemView.NoEditTriggers)
tab.setIndexWidget(sti.index(0, 3), QPushButton("button"))
tab.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
如果你有,你也可以通过方法QStandardItem()访问QModelIndexindexFromItem()
| 归档时间: |
|
| 查看次数: |
8861 次 |
| 最近记录: |