<div dir="ltr">I've created a columnview with checkboxes. However whenever I check or uncheck an item, next column is loaded automatically. I don't want to load the next column when the checkbox state changed. I want it to be shown only when the particular row is selected/clicked. <div><br></div><div>In my program I implemented QAbstractItemModel. For an example I'm using QFileSystemModel here</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">from PyQt4 import QtCore, QtGui<br>import os<br>try:<br>    _fromUtf8 = QtCore.QString.fromUtf8<br>except AttributeError:<br>    def _fromUtf8(s):<br>        return s<br>try:<br>    _encoding = QtGui.QApplication.UnicodeUTF8<br>    def _translate(context, text, disambig):<br>        return QtGui.QApplication.translate(context, text, disambig, _encoding)<br>except AttributeError:<br>    def _translate(context, text, disambig):<br>        return QtGui.QApplication.translate(context, text, disambig)<br>class MyModel(QtGui.QFileSystemModel):<br>    def __init__(self):<br>        super().__init__()<br>        self.checkedIndexes = {}<br>        self.parentChecked=False<br>    <br>    def flags(self,index):<br>        flags=super().flags(index)|QtCore.Qt.ItemIsUserCheckable<br>        return flags<br>    <br>    def checkState(self, index):<br>        if index in self.checkedIndexes:<br>            return self.checkedIndexes[index]<br>        else:<br>            return QtCore.Qt.Checked<br>    <br>    def data(self, index, role=QtCore.Qt.DisplayRole):<br>        if role == QtCore.Qt.CheckStateRole:<br>            if index.column() == 0:<br>                return self.checkState(index)<br>        else:<br>            return super().data(index, role)<br>    <br>    def setData(self, index, value, role):<br>        if (role == QtCore.Qt.CheckStateRole and index.column() == 0):<br>            self.checkedIndexes[index] = value<br>            self.dataChanged.emit(index,index)<br>            return True<br>        <br>        return super().setData(index, value, role)<br>                    <br>    def hasChildren(self,index):<br>        hasChildren=super().hasChildren(index)<br>        path=super().filePath(index)<br>        <br>        dirIter=QtCore.QDirIterator(path,QtCore.QDir.AllDirs|QtCore.QDir.NoDotAndDotDot|QtCore.QDir.NoSymLinks)<br>        if dirIter.hasNext():<br>            return True<br>        else:<br>            return False<br>        <br>        return hasChildren<br>            <br>class columnView(QtGui.QDialog):<br>    def __init__(self,parent=None):<br>        super().__init__(parent)<br>        self.ui = Ui_Dialog()<br>        self.ui.setupUi(self)<br>        <br>        self.model=MyModel()<br>        self.model.setFilter(QtCore.QDir.AllDirs|QtCore.QDir.NoDotAndDotDot|QtCore.QDir.NoSymLinks)<br>        path=os.path.expanduser("~")<br>        self.model.setRootPath(path)<br>        self.ui.columnView.setModel(self.model)<br>        <br>        self.ui.columnView.setRootIndex(self.model.index(path))<br>        <br>        self.show()<br>        <br>class Ui_Dialog(object):<br>    def setupUi(self, Dialog):<br>        Dialog.setObjectName(_fromUtf8("Dialog"))<br>        Dialog.resize(596, 389)<br>        self.verticalLayout = QtGui.QVBoxLayout(Dialog)<br>        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))<br>        self.columnView = QtGui.QColumnView(Dialog)<br>        self.columnView.setObjectName(_fromUtf8("columnView"))<br>        self.verticalLayout.addWidget(self.columnView)<br>        self.horizontalLayout = QtGui.QHBoxLayout()<br>        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))<br>        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)<br>        self.horizontalLayout.addItem(spacerItem)<br>        self.closePushButton = QtGui.QPushButton(Dialog)<br>        self.closePushButton.setObjectName(_fromUtf8("closePushButton"))<br>        self.horizontalLayout.addWidget(self.closePushButton)<br>        self.verticalLayout.addLayout(self.horizontalLayout)<br>        self.retranslateUi(Dialog)<br>        QtCore.QMetaObject.connectSlotsByName(Dialog)<br>    def retranslateUi(self, Dialog):<br>        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))<br>        self.closePushButton.setText(_translate("Dialog", "Close", None))<br><br>if __name__ == "__main__":<br>    import sys<br>    app = QtGui.QApplication(sys.argv)<br>    view = columnView()<br>    sys.exit(app.exec_())</blockquote><div><br></div></div><div>Any help is appreciated. </div></div>