[PyKDE] unexpected extended selection behavior in QListView

Matthew Scott gmane at goldenspud.com
Mon Aug 9 23:11:00 BST 2004


Hello all,

The following code exhibits unexpected behavior using PyQt 3.12 and QT 
3.3.2 on Debian unstable.  It also exhibits the behavior when using PyQt 
3.11 and QT 3.3.1 as provided by the BlackAdder demo for Win32.

After running the code, the second and third items will be selected, and 
the current item is set to the second.

When you hold down Shift and click the fourth item, -all- of the items 
are selected, as if the 1st item was actually the current item (which it 
isn't in this case).

Does anyone know of a workaround to use along with setCurrentItem() in 
order to make extended selection work as expected?  (Where only items 2, 
3, and 4 would be selected according to the example above)


Thanks,
- Matthew



# ---8<   snip   8<--------


import sys
import qt

class App(qt.QApplication):

     def __init__(self):
         qt.QApplication.__init__(self, sys.argv)
         self.mainWindow = MainWindow()
         self.setMainWidget(self.mainWindow)
         self.mainWindow.show()

class MainWindow(qt.QMainWindow):

     def __init__(self):
         qt.QMainWindow.__init__(self)
         listView = qt.QListView(self)
         listView.addColumn('foo')
         listView.setSelectionMode(listView.Extended)
         self.setCentralWidget(listView)
         item1 = qt.QListViewItem(listView, 'item1')
         item2 = qt.QListViewItem(listView, 'item2')
         item3 = qt.QListViewItem(listView, 'item3')
         item4 = qt.QListViewItem(listView, 'item4')
         listView.clearSelection()
         listView.setSelected(item2, True)
         listView.setSelected(item3, True)
         listView.setCurrentItem(item2)
         print 'Current item is item2?', listView.currentItem() is item2
         print 'Now hold down shift and click item 4.'

if __name__ == '__main__':
     app = App()
     app.exec_loop()


# ---8<   snip   8<--------





More information about the PyQt mailing list