本文介绍了PYQT.如何在QTableView中插入小部件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有一个表:
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)
有一个按钮:
btn=QPushButton('Press', self)
btn.clicked.connect(self.on_clicked)
btn.resize(btn.sizeHint())
任务:如何在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_())
如果您有QStandardItem()
,还可以通过indexFromItem()
方法访问QModelIndex
这篇关于PYQT.如何在QTableView中插入小部件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!