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)







