Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-126721

[REG 6.6->6.7] Overriden setVisible() no longer gets called when parent widget is shown

    XMLWordPrintable

Details

    • fc4c6fb5f (dev), 705dbea2a (6.8), a007c5aa0 (6.7)

    Description

      The virtual function QWidget::setVisible(bool) has earlier always been called when the visibility status of a widget changed. So it has been used as a way to do lazy initialization in a custom widget: implement a setVisible() override and do the init there, just before the widget gets shown. However, after https://codereview.qt-project.org/c/qt/qtbase/+/536262 this no longer works. This has resulted in https://bugreports.qt.io/browse/QTBUG-126218, since QPrintPreviewWidget used that mechanism.

      Now the doc of setVisible() is pretty clear that overriding that function is not the way to go; instead it recommends showEvent() etc. So the choice in QPrintPreviewWidget was presumably not so smart. And presumably it not so hard to fix/workaround, although there may be some BIC complexities. Nonetheless there are some issues here:

      1. There are ~20 other overridden setVisible() functions in qtbase alone - are we sure this behavior change do not cause issues with any of those?
      2. Are we comfortable inducing this behavior change on users?

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              vestbo Tor Arne Vestbø
              vgt Eirik Aavitsland
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes