(self, *args, **kwargs)
| 69 | class Window(QWidget): |
| 70 | |
| 71 | def __init__(self, *args, **kwargs): |
| 72 | super(Window, self).__init__(*args, **kwargs) |
| 73 | self.resize(800, 600) |
| 74 | layout = QVBoxLayout(self) |
| 75 | # 名字排序 |
| 76 | layout.addWidget(QPushButton('以名字升序', self, clicked=self.sortByName)) |
| 77 | # 时间倒序 |
| 78 | layout.addWidget(QPushButton('以时间倒序', self, clicked=self.sortByTime)) |
| 79 | # listview |
| 80 | self.listView = QListView(self) |
| 81 | layout.addWidget(self.listView) |
| 82 | # 数据模型 |
| 83 | self.dmodel = QStandardItemModel(self.listView) |
| 84 | # 排序代理模型 |
| 85 | self.fmodel = SortFilterProxyModel(self.listView) |
| 86 | self.fmodel.setSourceModel(self.dmodel) |
| 87 | self.listView.setModel(self.fmodel) |
| 88 | |
| 89 | # 模拟生成50条数据 |
| 90 | for _ in range(50): |
| 91 | name = randomChar(5) |
| 92 | times = time() + randint(0, 30) # 当前时间随机+ |
| 93 | value = '{}-{}'.format(name, times) # 内容用-分开 |
| 94 | item = QStandardItem(value) |
| 95 | # item.setData(value, Qt.UserRole + 2) |
| 96 | self.dmodel.appendRow(item) |
| 97 | # 索引 |
| 98 | index = self.fmodel.mapFromSource(item.index()) |
| 99 | # 自定义的widget |
| 100 | widget = CustomWidget(value, self) |
| 101 | item.setSizeHint(widget.sizeHint()) |
| 102 | self.listView.setIndexWidget(index, widget) |
| 103 | |
| 104 | def sortByTime(self): |
| 105 | # 按照时间倒序排序 |
no test coverage detected