Hi Chris,

I'm not sure if this can be fixed, maybe you can ask this
on the Qt info mailing list.  If it can be fixed, I'm interested
in the solution ;)

What happens is, when the TableWidget receives a click, it
creates an editor, but the editor has not yet received the
click.   That is perfect in most cases, but in case you draw
a button it isn't.

Cheers,

Erik


On Wednesday, November 07, 2012 02:50:17 PM Cristobal Infante wrote:

Hi Eric,

Thanks for the tip, I've managed to get my button inside my tableview.

There is only one thing that bothers me, not sure if it is a limitation or 
something I can fix.

To be able to press a button, I need to "activate" the containing cell with a 
click. 
Once the cell is active I can press the button. This could become confusing 
for your average user.

Is this fixable?

Best,
Cris





On 6 November 2012 22:05, <erik.janss...@conceptive.be> wrote:

The delegate itself can only paint, it cannot react to
clicks, you should implement the createEditor method,
the editor then reacts to clicks
 
On Tuesday, November 06, 2012 09:59:03 PM Cristobal Infante wrote:

Hi,


I am trying to embed a button per row inside a tableview. My botton are 
drawing correctly as delegates but are not reacting to any clicks. 


Should I be setting flags for this column? so far I have something like:



 if index.column() == 14: 
        flags |=  QtCore.Qt.ItemIsSelectable  | QtCore.Qt.ItemIsUserCheckable | 
Qt.ItemIsEnabled 
    return flags     




This is my delegate, but how do I make the button react to clicks?


Thanks,
cris






class AButton(QtGui.QStyledItemDelegate): 
mouse_isPressed = False 


def __init__(self, parent = None): 
    QtGui.QStyledItemDelegate.__init__(self, parent) 


def boundingRect(self): 
    return QtCore.QRectF(0, 0, 40, 40) 


def paint(self, painter, option, widget = 0): 
    opt = QtGui.QStyleOptionButton() 


    opt.state = ((QtGui.QStyle.State_Sunken if self.mouse_isPressed else 
QtGui.QStyle.State_Raised) | QtGui.QStyle.State_Enabled) 
    opt.text = self.text() 
    opt.icon = self.icon() 
    opt.rect = option.rect 
    opt.palette = option.palette 
    QtGui.QApplication.style().drawControl(QtGui.QStyle.CE_PushButton, opt, 
painter) 


def text(self): 
    return QtCore.QString("hi") 


def icon(self): 
    return QtGui.QIcon() 


def mousePressEvent(self, event): 
    self.mouse_isPressed = True 
    print "HELLO" 
    self.update() 


def mouseReleaseEvent(self, event): 
    self.mouse_isPressed = False 
    self.update() 




_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt





_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to