Hi all,
I was writing an OpenGL widget (which is working fine), and I got mouse events working great – but am having a terrible time getting keyboard events to fire/register. I have overridden keyPressEvent/keyReleaseEvent, but when I click on the widget (widget is placed/loaded in a QML script), the mouse events fire, but no keyboard events seem to fire in the keyPress/ReleaseEvent callbacks.
I noted that I had to use setAcceptedMouseButtons() in order to get mouse events to work, is there any equivalent for keyboard events that I should be setting?
Am I missing something? The docs seem to indicate setting the focus policy, but setFocusPolicy() doesn’t work on QtQuick items.
Any help would be greatly appreciated!
glViewer.h
class glViewer:public QQuickPaintedItem
{
Q_OBJECT
public:
glViewer();
~glViewer();
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent * event);
void wheelEvent(QWheelEvent *event);
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent* keyEvent);
...
public slots:
void preRender();
void paint(QPainter *painter);
void selectedBufferAttributeIndexUpdate();
...
}
glViewer.cpp
glViewer::glViewer()
{
// set the drawing render target to a paint FBO
setRenderTarget(QQuickPaintedItem::FramebufferObject);
// enable mouse events
setAcceptedMouseButtons(Qt::AllButtons);
setAcceptHoverEvents(true);
}
void glViewer::mousePressEvent(QMouseEvent *event) { ...}
void glViewer::mouseReleaseEvent(QMouseEvent *event) {...}
...
void glViewer::keyPressEvent(QKeyEvent *event) {...}
void glViewer::keyReleaseEvent(QKeyEvent* keyEvent) {...}
↧