Код ниже создает QTableView
, управляемый self.myModel
(QAbstractTableModel
). «Показать все» self.checkBox
связан с методом self.myModel.cbChanged()
.Как обновить QTableView, когда он управляется моделью
Вопрос: Как изменить этот код, так что «QTableView» получает обновляется, как только флажок?
Цель: когда флажок установлен, мы хотим, чтобы отображались нечетные номера. И четные номера будут скрыты. Если флажок выключен (не отмечен), мы хотим, чтобы отображались четные номера. Все нечетные номера скрыты.
import sys, os
from PyQt4 import QtCore, QtGui
app=QtGui.QApplication(sys.argv)
class TableModel(QtCore.QAbstractTableModel):
def __init__(self):
QtCore.QAbstractTableModel.__init__(self)
self.items=['One','Two','Three','Four','Five','Six','Seven']
self.cb_status=True
def rowCount(self, parent=QtCore.QModelIndex()):
return len(self.items)
def columnCount(self, index=QtCore.QModelIndex()):
return 1
def data(self, index, role):
if not index.isValid() or not (0<=index.row()<len(self.items)):
return QtCore.QVariant()
item=str(self.items[index.row()])
if role==QtCore.Qt.DisplayRole and self.cb_status:
return item
else:
return QtCore.QVariant()
def cbChanged(self, arg=None):
self.cb_status=arg
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
mainLayout=QtGui.QHBoxLayout()
self.setLayout(mainLayout)
self.viewA=QtGui.QTableView()
self.viewA.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
self.myModel=TableModel()
self.viewA.setModel(self.myModel)
self.checkBox=QtGui.QCheckBox("Show All")
self.checkBox.stateChanged.connect(self.myModel.cbChanged)
self.checkBox.setChecked(self.myModel.cb_status)
mainLayout.addWidget(self.viewA)
mainLayout.addWidget(self.checkBox)
self.show()
view=Window()
sys.exit(app.exec_())
Установить пустую модель в одном корпусе и модели с данными в другом корпусе? Просмотр будет обновляться автоматически. – Chernobyl
Отправьте пример – alphanumeric
Присвоение пустой «манекена» модели ВЕРОЯТНО работает в ситуации, когда флажок используется для включения и выключения элементов. Но если предположим, что мы хотим использовать флажок, чтобы переключаться между нечетными и четными номерами элементов, пустой подход модели не будет делать трюк ... – alphanumeric