QGLWidget :: renderText()创建一些向下移位的字母

时间:2012-04-25 11:59:28

标签: macos qt opengl text

我创建了一个派生自QGLWidget的类:

class OpenGLWidget : public QGLWidget

我想在OpenGL小部件上面写一些文字。因此我在我的类的paintGL()中使用了renderText()方法:

QString s = QString("AaBbCcDd");
renderText(10, 20, s);        // picture line 1

在我的小部件顶部创建的文本中,一些字母向下/向上移动。

查看this picture

例如,在图片'C'的第一行,'G','O'向上移动,'4','5'向下移动。

我试图改变字体和字体大小,但这只改变了移位的字母,而不是问题本身:

QFont font = QFont("Arial");
font.setPointSize(18);
renderText(10, 50, s, font);    // picture line 2

font = QFont("Times");
font.setPointSize(18);
renderText(10, 80, s, font);    // picture line 3

font = QFont("Courier");
font.setPointSize(18);
renderText(10, 110, s, font);   // picture line 4

font = QFont("Courier");
font.setPointSize(16);
renderText(10, 140, s, font);   // picture line 5

有人知道如何将这些字母带到一条直线上吗?

我还尝试了QPainter :: drawText()方法,而不是我班级的paintGL()中的renderText():

QPainter painter(this);
QString s = QString("AaBbCcDd");
painter.drawText(10, 20, s);

此方法会导致同样的问题。

我在Mac OS 10.7上使用Qt 4.7.4和Qt Creator 2.4.1。

1 个答案:

答案 0 :(得分:1)

这是Qt 4.8.x中的known bug。它会影响在OS X 10.7和10.8(Lion和Mountain Lion)下运行的基于Mac Qt的应用程序。如果您在OS X 10.6(Snow Leopard)下运行您的应用程序,您将看不到问题。

Qt 5.0.x修复了OS X 10.7和10.8的renderText()问题,但仍然太过于无法用作替代更稳固的4.8.x版本。

可悲的是,Qt众神还没有(还)自己用5.0.x版本的修复程序来改进4.8.x版本。