Important: Please read the Qt Code of Conduct -

Dialog behaviour and repaint issue

  • i'm in the process of "porting/adjusting" a pre-Qt Quick UI (just C++) from desktop to an embedded platform.
    the app had started on Qt 4.8.x and has now moved to Qt 5.0.2, which is the Qt version used by the target linux embedded platform.

    i'm still trying to absorb the notion of QPA's and their reliance to implementation plugins,
    along with any documentation i could find on how the paint system works in Qt 5.
    i'm currently using the eglfs plugin for my needs.

    the problem is that whenever a QDialog based widget pops up (e.g. .show or .exec methods) in my app and after it gets dismissed, the background widget (typically a QMainWindow) does not get repainted, i get just a grayed out screen with no containing widgets (QPushButton's, etc) visible.

    i tried to call refresh to no avail, but repaint/resize calls do redraw the interface,
    but thereafter no other repainting takes place, although the underlying widgets receive mouse events (i can tell from the app's log).
    changing the derived the dialog boxes to inherit from QFrame instead of QDialog works (as in no repaint issues),
    although app-specific functionality is somewhat crippled.

    so, to summarize my initial questions are:

    1] what is a surface in Qt 5? how does it relate to the QSurface class?
    2] is the single surface/full screen of eglfs anywhere documented? is it only on embedded? (as you might understand i do not fully grasp the relationships between those elements)
    3] QWindow inherits from QSurface. I understand the need for QWindow, although i'd expect QWidgets like QDialog to derive from it as well.
    Is it used privately or through composition? If not, how are QWidget based windows actually painted?

    any ideas/suggestions/pointers (to doc) would be greatly appreciated.

  • Moderators

    I advise you to post this to "Interest": Mailing List, too. As this is quite expert matter, you are more likely to get answers there.

  • will do that as well

Log in to reply