QQuickwidget захватывает изображение вне области окна
Это продолжение другого вопроса, в котором я не совсем точно описал свою цель.
Как уже упоминалось в связанном вопросе, я хочу сохранить QML, который встроен в QQuickWidget
и это больше, чем размер окна. QQuickWindow
grabWindow()
Метод захватывает только область окна и, следовательно, я попытался следующий код после того, как я визуально отобразил его:
QQuickWidget* content..
content->setSource(QUrl("qml:/main.qml"));
QPixmap *pm = content->grab(QRect(QPoint(0,0),QSize(-1,-1));
pm->save("someFilename.png", 0, 100);
Таким образом, это не проблема сохранения изображения после рендеринга. Используемый код QML просто Rectangle
, Предложенные решения в предыдущем вопросе только захватывают контент, попадающий в окно.
Какие-либо предложения? Спасибо!:)
Приложение:
Я попробовал следующее, но не сработало:
QImage paintdev(largeWidth, largeHeight, QImage:Format_RBG32);
content->render(paintdev, QPoint(0,0), QRegion(QRect(0,0,largeWidth, largeHeight), QWidget::DrawChildren);
paintdev.save(fileName, 0, 100);
По логике это должно решить проблему размера окна, поскольку окна нет. Любые комментарии?
2 ответа
Итак, я решил это, вручную сдвинув QML к окну height
и сохранение всех изображений из окна захватов и сопоставление их для формирования исходного изображения.
Не слишком много работы, но я все еще озадачен QWidget render()
метод, который не работал.
Спасибо за все отклики!
Если ваш QML-контент больше размера окна, часть, которая находится за пределами экрана, не рисуется. Следовательно, невозможно захватить что-либо за пределы экрана, если вы не используете 2 монитора и не расширяете обзор. Этот последний подход будет работать.