[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: [PyKDE] More Model/View QTableView/QTreeView questions
From: "Kelly Burkhart" <kelly.burkhart () gmail ! com>
Date: 2007-01-31 19:21:08
Message-ID: fa1e4ce70701311121s3012173qf7356f2962a8fcfa () mail ! gmail ! com
[Download RAW message or body]
I'm continuing to experiment with model/view and have a couple of
additional questions for you experts. Please see attached code.
1. Is there a way, either from the tree view or the table view to
select arbitrary text from within a cell? I.e. can I select just
'this text' from the middle cell in the right column? It appears that
with setSelectionBehavior and setSelectionMode the finest granularity
I can get is to highlight an entire cell. And it's not really
'selected' since I can't paste the text into another window.
2. In the table view, how can I get rid of all of that padding
surrounding the text so that it looks more like the tree view?
Thank you,
-K
["tst_lv.py" (text/x-python)]
#!/usr/bin/env python
import sys
import os
from PyQt4 import QtGui, QtCore
class TstModel( QtCore.QAbstractTableModel ):
def __init__( self ):
QtCore.QAbstractTableModel.__init__(self)
self._header = ( 'col0', 'col1', 'col2' )
self._itemsToKeep = 10
self._itemIdx = 0
self._items = [ ('item0', 'item0', 'item0'),
('how do','i select', 'just >this text< from this item'),
('item2','item2','item2') ]
def rowCount( self, parent ):
return len(self._items)
def columnCount( self, parent ):
return len(self._header)
def data( self, index, role ):
if not index.isValid():
return QtCore.QVariant()
if role != QtCore.Qt.DisplayRole:
return QtCore.QVariant()
row = index.row()
col = index.column()
if row < 0 or row >= len(self._items) or \
col < 0 or col >= len(self._header):
return QtCore.QVariant()
return QtCore.QVariant(self._items[row][col])
def headerData( self, section, orientation, role ):
if orientation == QtCore.Qt.Horizontal and \
role == QtCore.Qt.DisplayRole:
return QtCore.QVariant( self._header[section] )
return QtCore.QVariant()
def flags( self, index ):
return QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
class TstTreeView( QtGui.QTreeView ):
def __init__( self, model ):
QtGui.QTreeView.__init__(self)
self.setWindowTitle('TstTreeView')
self.setModel(model)
self.setRootIsDecorated(False)
self.setSortingEnabled(False)
self.resize( 600, 200 )
class TstTableView( QtGui.QTableView ):
def __init__( self, model ):
QtGui.QTableView.__init__(self)
self.setWindowTitle('TstTableView')
self.setModel(model)
self.setShowGrid( False )
self.verticalHeader().hide()
self.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
self.horizontalHeader().setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
self.horizontalHeader().setResizeMode(2, QtGui.QHeaderView.Stretch)
self.resize( 600, 200 )
class Tst:
def run( self ):
app = QtGui.QApplication(sys.argv)
tm = TstModel()
tv1 = TstTreeView( tm )
tv1.show()
tv2 = TstTableView( tm )
tv2.show()
app.connect(app, QtCore.SIGNAL('lastWindowClosed()'), \
app, QtCore.SLOT('quit()'))
sys.exit(app.exec_())
if __name__ == "__main__":
tst = Tst()
tst.run()
_______________________________________________
PyKDE mailing list PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic