Russian Qt Forum
Май 04, 2024, 01:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка виджета в QPixmap  (Прочитано 3680 раз)
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, то в левом верхнем углу появляется квадрат цвета окна. Что это означает? Не правильно задан размер сцены?
Спасибо.
Записан
marbius
Гость
« Ответ #1 : Ноябрь 05, 2010, 11:02 »

А Вы не хотите произвести отрисовку qwtPlot сразу в QPixmap?

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

« Последнее редактирование: Ноябрь 05, 2010, 11:05 от µarbius » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 21.