How to identify click events on customised objects?



  • We are rendering an Opengl Object using QGLWidget and we are trying to add signals and slots to the Opengl customised widget.
    How do we identity click event on our customised objects?

    By click I meant mouse down and mouse up event.
    Actually we are rendering a set of customised linear buttons using QGLWidget.
    So how do we identify the mouse click in a particular area of our customised buttons?



  • What do you mean by "identify click event"?
    Note that there is no real click event in Qt in the sense of QEvents. There are mouse down and up events, and there is a double click event, but no click event. A click is simply a mouse down, followed by a mouse up in the same region of your widget.



  • If understand you correctly, then you just need to override

    @void QWidget::mousePressEvent ( QMouseEvent * event )@

    and when the event occurs, this event handler will be automatically called.



  • Hi Lyuts,
    I am already doing that.But I need to identify a customised Opengl Widget,based on which area it is clicked.
    So how do I identify this click area or bounding rectangle of my customised Opengl Widget?



  • Well, because you do the rendering of that custom widget, it's up to you to identify what part of the widget was clicked. Qt can't help you with that.



  • on mouse click event you can get cursor position using
    @QCursor::pos()@
    just an idea this might help you. if you know the position of your custom object;



  • overriding the mouse event functions should work as said earlier. Do you need to identify an object in an opengl view, a 3d object you added to the scene ?



  • Hi, I am doing the same thing. I am working with the QGraphicsView/Scene. I want to add invisible rectangular areas, that has multiple properties, like clickable, repaintable, updatable, etc. Are only the event handlers option here or SIGNAL/SLOT mechanism still can be used?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.