Qt:光标闪烁导致重绘父小部件?

时间:2018-03-23 09:00:43

标签: c++ qt qt5 qtwidgets

Bellow你可以看到最简单的示例代码来演示问题。 如果您运行它并将焦点放在QLineEdit上,则会每秒获得一次输出:paintEventpaintEvent,依此类推。 我无法理解为什么MyW::paintEvent呼吁每一个人 光标在子窗口小部件中闪烁?如您所见,我没有配置QLineEdit, 默认情况下,在我的Linux机器上它没有透明元素, 但仍然由于某种原因,光标导致所有小部件重绘其内容?

#include <QApplication>
#include <QWidget>
#include <QPaintEvent>
#include <QPainter>
#include <QLineEdit>

class MyW final : public QWidget {
public:
    MyW() {
        //setAutoFillBackground(false);
    }
    void paintEvent(QPaintEvent *e) {       
        e->accept();
        qDebug("paintEvent");
        QPainter painter{this};
        painter.fillRect(rect(), Qt::green);
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyW w;
    w.resize(600, 600);
    w.show();
    auto le = new QLineEdit{&w};
    le->show();
    return app.exec();
}

0 个答案:

没有答案