在旧版本的Qt中有
QGLWidget,有一个很好的函数叫做
renderText.现在我使用
QOpenGLWidget类,并且缺少渲染文本的功能.
有没有简单的方式来渲染文本使用QOpenGLWidget?我不想从头开始用OpenGL构建整个文本渲染
解决方法
我最终做了一个类似于@jaba写的解决方案.我也注意到一些图形损坏,除非我在方法的结尾调用了painter.end().
void MapCanvas::renderText(double x,double y,double z,const QString &str,const QFont & font = QFont()) { // Identify x and y locations to render text within widget int height = this->height(); GLdouble textPosX = 0,textPosY = 0,textPosZ = 0; project(x,y,0f,&textPosX,&textPosY,&textPosZ); textPosY = height - textPosY; // y is inverted // Retrieve last OpenGL color to use as a font color GLdouble glColor[4]; glGetDoublev(GL_CURRENT_COLOR,glColor); QColor fontColor = QColor(glColor[0],glColor[1],glColor[2],glColor[3]); // Render text QPainter painter(this); painter.setPen(fontColor); painter.setFont(font); painter.drawText(textPosX,textPosY,text); painter.end(); }