2

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

class OpenGLWidget : public QGLWidget

我想在 OpenGL 小部件上写一些文本。因此,我在班级的 paintGL() 中使用了 renderText() 方法:

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

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

看看这张照片

例如,在图片的第一行中,“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。

4

1 回答 1

1

这是Qt 4.8.x中的一个已知错误。它会影响在 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 版本。

于 2013-06-13T17:08:00.527 回答