Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Thanks it really worked for me. My Original requirement was to call this view/model on a combo box. I tried calling this but it did not work ... I'm able to see the view inside the combo box but unable to select any of the check boxes. I tried quite a few possibility but did not succeed..</p> <p>Did a slight modification on your code to call from combo box.</p> <p>the modified code is: </p> <pre><code>import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class TestItem(): def __init__(self, name, checked): self.checked = checked self.name = name class StbTreeView(QAbstractListModel): def __init__(self, args, parent = None): super(StbTreeView, self).__init__(parent) self.args = [] for item_name in args: self.args.append(TestItem(item_name, False)) for item in self.args: print item.name #print 'Value of self.args is %s' % self.args def rowCount(self, parent): return len(self.args) def headerData(self, section, orientation, role): if role == Qt.DisplayRole: if orientation == Qt.Horizontal: return QString("Select STB's") def flags(self, index): return Qt.ItemIsUserCheckable | Qt.ItemIsEditable | Qt.ItemIsSelectable | Qt.ItemIsEnabled def data(self, index, role=Qt.DisplayRole): if role == Qt.DisplayRole: row = index.row() print self.args[row].name return self.args[row].name if role == Qt.CheckStateRole: row = index.row() print self.args[row].checked if self.args[row].checked == False: return QVariant(Qt.Unchecked) else: return QVariant(Qt.Checked) def setData(self, index, value, role): if role == Qt.CheckStateRole: row = index.row() self.args[row].checked = not self.args[row].checked return True class Template(QTreeView): def __init__(self, parent=None): super(Template, self).__init__(parent) self.data = ['STB1', 'STB2', 'STB3', 'STB4', 'STB5', 'STB6', 'STB7', 'STB8'] self.MainUI() def MainUI(self): self.model = StbTreeView(self.data) self.setModel(self.model) def main(): myapp = QApplication(sys.argv) temp = Template() temp.show() myapp.exec_() if __name__ == '__main__': main() </code></pre> <p>The code from combo box:</p> <pre><code>stb_listview = QComboBox() view = Template() stb_listview.setView(view) stb_listview.setModel(view.model) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload