Bellow你可以看到最简单的示例代码来演示问题。
如果您运行它并将焦点放在QLineEdit
上,则会每秒获得一次输出:paintEvent
,paintEvent
,依此类推。
我无法理解为什么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();
}