【发布时间】:2020-11-21 21:47:59
【问题描述】:
我有一个容纳数据的QStandardItemModel。在其中一个专栏中,我想添加一些QWidgets(可点击图片)。然而,在添加QSortFilterProxyModel 用于排序/过滤目的之后,QSortFilterProxyModel 隐藏了我想要的QWidgets。
我搜索了互联网,但找不到如何同时保留QWidget 和QSortFilterProxyModel。如果有人可以在这个问题上指导我,将不胜感激。谢谢。
一个最小的例子,使用QPushButton作为我想要的QWidget:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Buttons(QWidget):
def __init__(self):
super().__init__()
layout = QHBoxLayout(self)
layout.addWidget(QPushButton('btn1'))
layout.addWidget(QPushButton('btn2'))
self.setLayout(layout)
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
tab = QTableView()
sti = QStandardItemModel()
if True: # This shows the buttons in a cell
tab.setModel(sti)
else: # This does not show the buttons
proxy = QSortFilterProxyModel()
proxy.setSourceModel(sti)
tab.setModel(proxy)
sti.appendRow([QStandardItem(str(i)) for i in range(5)])
tab.setIndexWidget(sti.index(0, 0), QPushButton("hi"))
sti.appendRow([])
tab.setIndexWidget(sti.index(1, 2), Buttons())
self.setCentralWidget(tab)
app = QApplication([])
window = MainWindow()
window.resize(800, 600)
window.show()
app.exec_()
【问题讨论】:
标签: python pyqt5 qsortfilterproxymodel