При сохранении содержимого QGLWidget в виде изображения, текст в виджете не сохраняется - PullRequest
0 голосов
/ 06 января 2012

В моем QGLWidet я рисую некоторый текст, используя метод renderText ().Затем я хочу сохранить содержимое виджета в виде изображения.Но оказывается, что текст, нарисованный renderText (), не сохраняется.

void MyGLWidget::paintGL()
{
    qglClearColor(Qt::white);
    glViewport(0,0, width(), height());
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);

    glBegin(GL_LINES);
    glVertex2f(0,0);
    glVertex2f(width(), height());
    glEnd();

    renderText(50, 50,  "Hello");
    glColor3f(0.0,1.0,0.0);
    renderText(50, 150, "World");
}

Вот код для сохранения изображения:

void MyGLWidget::saveImage()
{
    QGLPixelBuffer pbuffer(width(), height());
    pbuffer.makeCurrent();
    paintGL();
    QImage image = pbuffer.toImage();
    image.save("test_image.tif","tif");
}

Есть идеи?

1 Ответ

1 голос
/ 12 апреля 2012

После отладки в исходном коде Qt 4.8.0 я нашел несколько причин, по которым это не сработает.

  1. renderText использует ширину и высоту GLWidget, а не QGLPixelBuffer (для вашего случая это не проблема, поскольку ваш скриншот и виджет имеют одинаковый размер)
  2. Он создает QPainter для QGLWidget для отображения текста

К сожалению, похоже, что renderText просто несовместим с QGLPixelBuffers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...