def __init__(self, items, default="name", parent=None): QtGui.QWidget.__init__(self, parent) QtGui.QVBoxLayout(self) self.__default = default self.setMaximumHeight(200) self.list_widget = QtGui.QListWidget(self) self.list_widget.itemDoubleClicked.connect(self.list_widget.editItem) for item in (items or []): list_item = self.__newItem(item) self.list_widget.addItem(list_item) self.list_widget.sortItems() self.btn_add = QtGui.QPushButton(QtGui.QIcon(":/images/plus.png"), "", self) self.btn_add.setFlat(True) self.btn_add.clicked.connect(self.addItem) self.btn_sub = QtGui.QPushButton(QtGui.QIcon(":/images/minus.png"), "", self) self.btn_sub.setFlat(True) self.btn_sub.clicked.connect(self.removeItems) layout_btn = QtGui.QHBoxLayout() layout_btn.setContentsMargins(0, 0, 0, 0) layout_btn.setSpacing(1) layout_btn.addStretch() layout_btn.addWidget(self.btn_add) layout_btn.addWidget(self.btn_sub) self.layout().addWidget(self.list_widget) self.layout().addLayout(layout_btn)
def __init__(self, title, options, checked, allSelected=True, parent=None): QtGui.QWidget.__init__(self, parent) layout = QtGui.QVBoxLayout(self) self.listItems = QtGui.QListWidget(self) self.listItems.setMaximumHeight(100) for opt in options: item = QtGui.QListWidgetItem(opt) item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) if checked and opt in checked: item.setCheckState(QtCore.Qt.Checked) else: item.setCheckState(QtCore.Qt.Unchecked) self.listItems.addItem(item) self.checkBoxAll = QtGui.QCheckBox("All %s" % title, self) if allSelected: self.listItems.setDisabled(True) self.checkBoxAll.setCheckState(QtCore.Qt.Checked) self.checkBoxAll.stateChanged.connect(self.__allSelectedToggled) layout.addWidget(self.checkBoxAll) layout.addWidget(self.listItems)