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

Posted

技术标签:

【中文标题】QGLWidget::renderText() 创建一些向下移动的字母【英文标题】:QGLWidget::renderText() creates some downwards shifted letters 【发布时间】:2012-04-25 11:59:27 【问题描述】:

我创建了一个从 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。

【问题讨论】:

我在 Qt 4.8.1 上重试了它,但问题仍然存在。我也尝试了QFont的几乎所有功能和设置,所以我认为问题不是来自QFont 我用同样的代码,在Windows XP下编译,没有出现问题。所以它可能是特定于 Mac OS 的。 【参考方案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 版本。

【讨论】:

以上是关于QGLWidget::renderText() 创建一些向下移动的字母的主要内容,如果未能解决你的问题,请参考以下文章

QGLWidget RenderText() 崩溃和文本混乱

什么是信创产品?怎么成为信创产品?

创青春-数字经济赛道,中国创翼临沂市决赛,创客中国-中小企业创客比赛-临沂市决赛

张继群,创青春-数字经济赛道,中国创翼临沂市决赛,创客中国-中小企业创客比赛-临沂市决赛

信创产业专题:突破核心技术,信创扬帆起航(2021)

信创产业专题:突破核心技术,信创扬帆起航(2021)