setCursor() stops working after interacting with QMessageBox using space key
-
Hi everyone,
I am experiencing an issue where setCursor() stops working after interacting with a QMessageBox using the space key.
System Information:
- Qt Version: 6.8.2
- OS: macOS Sequoia 15.3.2
- Compiler: Apple clang version 16.0.0 (clang-1600.0.26.6)
Problem Description:
In my QGraphicsView-based application, I use setCursor() to change the cursor based on user interactions. Everything works fine until I open a QMessageBox.
- Everything works correctly if I click the message box buttons with the mouse.
- However, if I use the space key to interact with the message box, setCursor() stops working.
- Even after clicking on the graphics view again, changing the cursor programmatically no longer has any effect.
- The cursor only resets to the expected behavior if I move or resize the application window.
What I Have Tried:
- Using setCursor() and viewport()->setCursor() on QGraphicsView.
- Calling update(), repaint(), and viewport()->update() after setting the cursor.
- Forcing a cursor reset using unsetCursor() before setCursor().
- Setting the cursor on QApplication instead of QGraphicsView.
- Ensuring that focus is correctly set back to QGraphicsView after closing the QMessageBox.
None of these solutions have worked.
Question:
- Has anyone encountered this issue before?
- Is there a workaround to force setCursor() to work again after interacting with a QMessageBox via the space key?
Any help or suggestions would be greatly appreciated!
Thanks! -
Hi and welcome to devnet,
Are you using exec or open ?
If the former, can you test with the latter ? -
I am using confirmBox.exec() because I want the user to confirm before proceeding. The blocking behavior is intentional in this case.
However, I am also facing another issue with QGraphicsRectItem:
After zooming in or out, the hover event does not work in a ~10px area at the bottom edge of the RectItem. Additionally, setCursor does not take effect until I move the application window.
I suspect these issues might be related, but I don’t think they are caused by exec(). Do you have any insights on what might be happening?
-
wrt to the QGraphicsrectItem - any chance you hit bug https://bugreports.qt.io/browse/QTBUG-131893 ?
Please provide a minimal, compilable example to reproduce the problem. -
I've provided a minimal, compilable example to reproduce the issue. You can find it here:
👉 GitHub Repository: QGraphicsBugThe repository includes build instructions and a detailed Steps to Reproduce section in the README.
Would appreciate any insights or suggestions. Thanks!
-
I've noticed something interesting: If an action automatically triggers a QMessageBox, and I press Space to interact with it, the issue occurs. However, if I repeat the same action one more time, setCursor() starts working again.
This suggests that Qt's internal state might not be resetting correctly after the first QMessageBox interaction, but it somehow corrects itself on the second occurrence.
-
I can't reproduce it with Qt6.8.2 or Qt6.10 on windows with msvc.
-
Thanks for testing it!
I'm running this on macOS Sequoia 15.3.2 with Qt 6.8.2, using Apple Clang 16.0.0. The issue is consistently reproducible on my setup. This might be a macOS-specific issue.
Would it make sense to report this on Qt's bug tracker (bugreports.qt.io)?
-
Yes it would, I was able to reproduce the issue on Sonoma with a self built version of Qt.
Please provide your example directly in the bug report so it will keep things together.
-
I really appreciate you taking the time to look into this issue!
I have submitted the bug report to Qt's bug tracker and included the minimal example directly in the report. Here is the link for reference: QTBUG-135154
-
Thanks !
Please add a tar file with your project to the report. That way it's easier for people to work on this.