Скриншот в небольшой части Qt-Window - PullRequest
2 голосов
/ 05 марта 2012

Я хотел бы иметь возможность делать скриншоты моей программы и сохранять их в формате png (или, если возможно, в формате pdf).Я взял пример скриншота с Qt.Это снимок экрана со всего дисплея.Но я хотел бы сделать снимок экрана только из части моего окна, даже если оно находится в другом месте экрана.Как мне это сделать.Есть ли функция?

Ответы [ 3 ]

4 голосов
/ 05 марта 2012

Функция static grabWidget из QPixmap - ваш друг. Вы можете легко взять растровое изображение предоставленного виджета и затем сохранить его в любом формате:

QPixmap p = QPixmap::grabWidget(widget);
p.save("p.png");
0 голосов
/ 05 марта 2012

Изучите окно, чтобы узнать его положение и размер. Если у вас есть какой-то конкретный элемент, который вы хотите видеть на скриншоте, вы можете вместо этого получить его положение и размер. В противном случае вам придется использовать смещения из положения окна, которые могут вызвать проблемы (например, при изменении размера окна).

Получите снимок экрана, а затем закрепите растровое изображение, используя позицию / размер, заданный ранее.

Есть один недостаток: делать снимок всего рабочего стола довольно медленно.

Таким образом, лучшим решением может быть изменение вашего приложения: визуализация частей, которые вы хотите сохранить, в внеэкранном буфере. Затем вы можете использовать этот буфер для визуализации интерфейса и сохранения снимка экрана одновременно.

0 голосов
/ 05 марта 2012

Как насчет QWidget::render (http://doc.qt.nokia.com/4.7-snapshot/qwidget.html#render)?

...