[PyQt] Resize flicking on QMainWindow centralWidget in python but not C++

Patrick Stinson patrickkidd at gmail.com
Sat Oct 5 22:10:01 BST 2019


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();
}





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20191005/653b7af3/attachment.html>


More information about the PyQt mailing list