Re: Resize flicking on QMainWindow centralWidget in python but not C++
Eric Pettersen <[email protected]>
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <[email protected]> |
We had this behavior in our own app, but it kind of went away on its own. We came to suspect that it had to with the setting of MACOSX_DEPLOYMENT_TARGET. I don’t know if you set that variable in your compile, but if you do you might try changing it (or not setting it) and see what happens. —Eric > On Oct 6, 2019, at 1:38 PM, Patrick Stinson <[email protected]> wrote: > > I wonder if maybe the use of QQuickWidget child widgets enables some kind of OpenGL buffer in the QMainWindoe? > >> On Oct 6, 2019, at 12:25 AM, Patrick Stinson <[email protected]> wrote: >> >> I put a qDebug() line in QMainWindow() and QOpenGLWidget(), rebuilt/installed Qt, and ran my app. I saw the line for the QMainWindow() but not QOpenGLWidget(), so that means QOpenGLWidget isn’t being run in my app. But I am still seeing the problem. Difficult to pinpoint as a reproducible report. >> >>> On Oct 5, 2019, at 10:25 PM, Patrick Stinson <[email protected] <mailto:[email protected]>> wrote: >>> >>> So it does, and changing that makes it work like the C++ example. >>> >>> My own app is still showing the problem even without using QOpenGLWidget. I wonder if there is some setting somewhere that implicitly uses QOpenGLWidget…. >>> >>>> On Oct 5, 2019, at 5:36 PM, Eric Pettersen <[email protected] <mailto:[email protected]>> wrote: >>>> >>>> Your Python class inherits from QOpenGLWidget. Your C++ class inherits from QWidget. >>>> >>>>> On Oct 5, 2019, at 2:10 PM, Patrick Stinson <[email protected] <mailto:[email protected]>> wrote: >>>>> >>>>> Hello, >>>>> >>>>> On MacOS, a QMainWindow with a simple painted centralWidget flickers when resizing quickly in python but not in C++. This only occurs with QMainWindow It is particularly pronounced more complex widgets, as shown in the following video: >>>>> >>>>> https://youtu.be/0Qjy2wm6m9M <https://youtu.be/0Qjy2wm6m9M> >>>>> >>>>> Here is the python example that shows the bug. Just run, rapidly resize the height of the widget , and observe a black flickering on the top edge of the widget as the height changes. >>>>> >>>>> class Widget(QOpenGLWidget): >>>>> def paintEvent(self, e): >>>>> p = QPainter(self) >>>>> p.setBrush(Qt.red) >>>>> p.drawRect(self.rect()) >>>>> >>>>> app = QApplication(sys.argv) >>>>> mw = QMainWindow() >>>>> w = Widget() >>>>> mw.setCentralWidget(w) >>>>> mw.show() >>>>> w.show() >>>>> app.exec() >>>>> >>>>> >>>>> The following 1-to-1 C++ translation shows no such behavior: >>>>> >>>>> >>>>> #include <QApplication> >>>>> #include <QMainWindow> >>>>> #include <QWidget> >>>>> #include <QPainter> >>>>> >>>>> class Widget : public QWidget { >>>>> public: >>>>> void paintEvent(QPaintEvent *) { >>>>> QPainter p(this); >>>>> p.setBrush(Qt::red); >>>>> p.drawRect(rect()); >>>>> } >>>>> }; >>>>> >>>>> int main(int argc, char *argv[]) >>>>> { >>>>> QApplication a(argc, argv); >>>>> QMainWindow mw; >>>>> QWidget *w = new Widget; >>>>> mw.setCentralWidget(w); >>>>> mw.show(); >>>>> return a.exec(); >>>>> } >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> PyQt mailing list [email protected] <mailto:[email protected]> >>>>> https://www.riverbankcomputing.com/mailman/listinfo/pyqt <https://www.riverbankcomputing.com/mailman/listinfo/pyqt> >>>> >>> >> > _______________________________________________ > PyQt mailing list [email protected] > https://www.riverbankcomputing.com/mailman/listinfo/pyqt _______________________________________________ PyQt mailing list [email protected] https://www.riverbankcomputing.com/mailman/listinfo/pyqt