2015-07-21 2 views
0

Это продолжение к another question здесь, где я не был точным при описании моей цели.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); 

Это должно по логике решить вопрос о размере окна, так как нет ни одного окна. Любые комментарии?

ответ

0

Если ваш размер QML больше размера окна, то часть, которая находится вне экрана, не нарисована. Следовательно, нет никакого способа захватить что-то из экрана, если вы не используете 2 монитора и расширяете представление. Этот последний подход будет работать.

+0

Будет ли мой вышеупомянутый код, используя метод QWidget grab(), захватить весь виджет независимо от размера виджета? --ok, теперь я понимаю: часть внешнего экрана не нарисована и, следовательно, невозможно захватить. – neoterryjoe

2

Итак, я решил это, вручную переключив QML на окно height и сохранив все изображения из оконных снимков и сопоставив их, чтобы сформировать исходное изображение.

Не слишком много работы, но я все еще озадачен способом QWidget render(), который не работает.

Спасибо за все ответы!

+0

да, хорошая идея :) – Mido

Смежные вопросы