Подскажите пожалуйста как сделать в списке элементовглавный элемент, который будет делать выбранными все элементы.
import sys
from PyQt4 import QtGui, QtCore
class ListModel(QtGui.QStandardItemModel):
def __init__(self, view, dataForModel):
super().__init__(view)
self.dataForModel = dataForModel
self.selectedItems = [] # Список с индексами выбранных элементов
self.buildItems()
self.connect(self, QtCore.SIGNAL('itemChanged(QStandardItem *)'), self.itemChanged)
def buildItems(self):
for song in self.dataForModel:
item = QtGui.QStandardItem(song)
item.setCheckable(True) # Разрешаем выделять наши пункты
item.setEditable(False) # Запрещаем редактировать текст
self.appendRow(item) # Добавляем созданный элементв модель
def reloadData(self, newData):
self.clear() # Удаляем существующие элементы
self.dataForModel = newData
self.buildItems()
def itemChanged(self, item):
indexItem = item.index().row()
if item.checkState() and indexItem not in self.selectedItems:
self.selectedItems.append(indexItem)
else:
self.selectedItems.remove(indexItem)
class View(QtGui.QListView):
def __init__(self, parent=None):
super().__init__(parent)
self.buildWidget()
def buildWidget(self):
self.model = ListModel(self, [str(i) for i in ['первый', 'второй', 'третий']])
self.setModel(self.model)
def reloadItems(self):
self.model.reloadData(['новый первый', 'новый второй'])
def printSelected(self):
print(self.model.selectedItems)
class MainWindow(QtGui.QWidget):
def __init__(self):
super().__init__()
self.buildWidget()
def buildWidget(self):
mainLayout = QtGui.QVBoxLayout(self)
view = View(self)
mainLayout.addWidget(view)
button1 = QtGui.QPushButton('Загрузить новые значения', self)
self.connect(button1, QtCore.SIGNAL('clicked()'), view.reloadItems)
mainLayout.addWidget(button1)
button2 = QtGui.QPushButton('Выбранные элементы', self)
self.connect(button2, QtCore.SIGNAL('clicked()'), view.printSelected)
mainLayout.addWidget(button2)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
app.exec_()