Введение в разработку приложений на платформе Atom/MeeGo для нетбуков и планшетников. Граничин О.Н - 105 стр.

UptoLike

105
В уже созданном обработчике bool MyWidget::event(QEvent
*event) надо добавить перехват события QEvent::Gesture, с ним
ничего не надо делать по существу, просто отметить как
обработанное, чтобы оно не попало к компоновщику.
В конце работы изображение может быть сохранено в
файл, для этого в Qt есть специальный класс QImageWriter. Он
автоматически определяет формат сохраняемого файла по
заданному расширению.
Перед сохранением QPixmap, полученный от виджета,
необходимо сконвертировать в QImage. Все это реализовано в
слоте saveImage().
Вернемся к захвату видеокадра, который будет служить
фоном для рисунка. Захват реализован в виде отдельного
приложения v4l2grab, работающего напрямую с
видеоподсистемой ядра MeeGo, которое можно собрать
непосредственно на планшете, без использования Qt Creator.
Установите зависимости
zypper install libjpeg-devel
скомпилируйте исполняемый файл
gcc v4l2grab.c -o v4l2grab -ljpeg
и перенесите его в /usr/bin
mv v4l2grab /usr/bin
Теперь v4l2grab можно использовать в главном
приложении с помощью класса QProcess, который позволяет
запускать внешние приложения из Qt. Целесообразно
установить таймаут выполнения внешнего приложения, в
данном случае это 3000 миллисекунд, т.е. 3 секунды.
Созданное v4l2grab изображение сохраняется в файл
/tmp/webcam_image.jpg, откуда потом его читает QImageReader:
v4l2grab.start("v4l2grab -W 800 -H 600 -d
/dev/video0"
" -o /tmp/webcam_image.jpg");
v4l2grab.waitForFinished(3000);