QQuickwidget захватывает изображение вне области окна

Это продолжение другого вопроса, в котором я не совсем точно описал свою цель.

Как уже упоминалось в связанном вопросе, я хочу сохранить QML, который встроен в QQuickWidget и это больше, чем размер окна. QQuickWindowgrabWindow() Метод захватывает только область окна и, следовательно, я попытался следующий код после того, как я визуально отобразил его:

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 монитора и не расширяете обзор. Этот последний подход будет работать.

Другие вопросы по тегам