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

文字を一直線に並べる方法を知っている人はいますか?

また、クラスの paintGL() 内で renderText() の代わりに QPainter::drawText() メソッドを試しました。

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

この方法でも同じ問題が発生します。

Mac OS 10.7 で Qt Creator 2.4.1 で Qt 4.7.4 を使用しています。

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 に答える