I am trying to draw some lines and text with QPainter in a QOpenGLWidget in paintGL()
. The text renders correctly, but the line doesn't show up. Here is my code:
void mainWidget::paintGL()
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glViewport(0, 0, width(), height());
glDepthFunc(GL_LEQUAL);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
QPainter painter(this);
painter.setPen(Qt::yellow);
painter.setFont(QFont("Helvetica", 14));
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
QString txt = "Hello World";
painter.drawText(50, 50, txt ); // works
painter.drawLine(QPoint(400, 400), QPoint(50, 50)); // doesn't work
painter.end();
}
Drawing the text is absolutely okay, but the line doesn't show up. I have seen other answers referencing the line being outside of the QPaintEvent
, but the text renders okay. The parts of the line are not out of bounds, because drawing text at both ends allows both text to show.
Why doesn't the line draw, and how can I fix it?
question from:
https://stackoverflow.com/questions/65644553/qpainter-can-draw-text-but-cannot-draw-line 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…