Re: Resize flicking on QMainWindow centralWidget in python but not C++

Patrick Stinson <[email protected]>
Newsgroups gmane.comp.python.pyqt-pykde
Message-ID <[email protected]>
Turns out simply adding a QQuickWidget as a child to QMainWindow::centralWidget causes this problem. I imagine this is because of the OpenGL buffer in QtQuick:

    app = QApplication(sys.argv)
    mw = QMainWindow()
    w = QQuickWidget()
    mw.setCentralWidget(w)
    mw.show()
    app.exec()

Does anyone know of a workaround for this? It makes the app look so ugly!

> On Oct 7, 2019, at 2:10 PM, Eric Pettersen <[email protected]> wrote:
> 
> 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] <mailto:[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] <mailto:[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] <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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.