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

UptoLike

233
Интернет с помощью GSM-модема. Во-вторых, мы должны
научиться получать кадр от камеры и сохранять его в формате JPG.
В-третьих, нам нужен механизм для приема данных на ЦОД. Эти
подзадачи независимы друг от друга.
Все эти три подзадачи были разобраны в лабораторных работах
9 и 10. Теперь надо объединить подзадачи в итоговое
приложение. Мы не будем включать в итоговое приложение
подключение к Интернет по модему, при желании это легко сделать
по аналогии. У нас опять есть несколько вариантов:
1. Программа на скриптовом языке, например Perl или даже bash.
Это наиболее быстрое и простое решение, но с плохими
перспективами в плане развития.
2. Обычная linux-программа на C – компромисс между
предыдущим и следующим вариантами.
3. QT-приложение с графическим интерфейсом даст использовать
потенциал MeeGo на полную мощность.
Выбираем вариант 3. Проект состоит из трех файлов
camserver.pro, camserver.h и camserver.cpp. Мы унаследуем класс
CamServerWidget от QWidget и добавим в него два слота grab() и
start() и таймер grabTimer. Пользовательский интерфейс будет
состоять всего из трех кнопок start, stop и quit и мы добавим их
прямо в исходном коде, в конструкторе класса, без применения
специальных инструментов. Там же свяжем слоты и сигналы:
сигнал clicked() кнопки quit свяжем со слотом quit() всего
приложения, чтобы завершать его работу. Сигнал кнопки stop
свяжем со слотом stop() таймера, чтобы останавливать работу
таймера. Сигнал кнопки start свяжем со слотом start() нашего
класса CamServerWidget. Сигнал timeout() таймера свяжем со
слотом grab() нашего класса, в нем будет вся функциональность.
Слот start() у нашего класса нужен только для того, чтобы
первоначальный запуск таймера происходил сразу же, через 0
миллисекунд, а не через 6000 миллисекунд (6 секунд), которые
задаются для каждого последующего запуска таймера. При этом
установку нулевого таймаута нельзя перенести из слота в
конструктор, потому что в этому случае нулевой таймаут сработает
только при первом нажатии кнопки start, а если мы остановим
процесс и запустим его заново, то таймаут уже окажется ненулевой.