PyQtでチェックボックスのリストを作成した。
いままでだとVBoxLayoutなんかでWidgetを追加していたけど、今回はQListView, QStandardItem, QStandardItemModelというのを使って行った。StackOverflowを参考にした。少しスマートにできた気がした。
いままでだとVBoxLayoutなんかでWidgetを追加していたけど、今回はQListView, QStandardItem, QStandardItemModelというのを使って行った。StackOverflowを参考にした。少しスマートにできた気がした。
from PyQt4 import QtGui, QtCore import sys class MyItemModel(QtGui.QStandardItemModel): def __init__(self, parent=None): super(QtGui.QStandardItemModel, self).__init__(parent) for i in xrange(10): item = QtGui.QStandardItem("item%d" % i) item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) item.setData(QtCore.QVariant(QtCore.Qt.Checked), QtCore.Qt.CheckStateRole) self.appendRow(item) self.itemChanged.connect(self.printState) def printState(self): states = [] for i in xrange(self.rowCount()): states.append(self.item(i).checkState()) print states class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.model = MyItemModel(self) view = QtGui.QListView(self) view.setModel(self.model) self.setCentralWidget(view) def main(args): app = QtGui.QApplication(sys.argv) form = MainWindow() form.show() sys.exit(app.exec_()) if __name__ == "__main__": main(sys.argv)