Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: giker от Октябрь 31, 2010, 11:06



Название: Отрисовка виджета в QPixmap
Отправлено: giker от Октябрь 31, 2010, 11:06
Добрый день. Помогите пожалуйста. Есть виджет (qwtPlot) который надо отрисовывать в QPixmap используя QGraphicsView. Для отрисовки использую такой код:

Код:
QGraphicsScene *scene = new QGraphicsScene(0, 0, qwtPlot->width(), qwtPlot->height());
QGraphicsProxyWidget *widget = scene->addWidget(qwtPlot, Qt::Widget);
QGraphicsView *view = new QGraphicsView();
view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view->setScene(scene);
qwtPlot->show();
view->show();
QPixmap pixmap(qwtPlot->size());
if (widget->isVisible())
{
       QPainter painter(&pixmap);
       painter.setRenderHint(QPainter::Antialiasing);
       view->render(&painter);
       if (pixmap.save(QApplication::applicationDirPath() + "/image.png", "PNG"))
       {
            QMessageBox box;
            box.setText("Saved");
            box.exec();
       }
}
delete widget;
delete scene;
delete view;

В результате на диске появляется файл, по виду нужного размера, но абсолютно черный. Что в моем коде неправильно, или здесь проблема в специфике qwt?
Если в качестве при добавлении виджета на сцену указать не Qt::Widget, а Qt::Window, то в левом верхнем углу появляется квадрат цвета окна. Что это означает? Не правильно задан размер сцены?
Спасибо.


Название: Re: Отрисовка виджета в QPixmap
Отправлено: marbius от Ноябрь 05, 2010, 11:02
А Вы не хотите произвести отрисовку qwtPlot сразу в QPixmap?

Код
C++ (Qt)
.....
QPixmap pixmap(qwtPlot->size());
qwtPlot->render(&pixmap);
.....