Лабораторная работа № 1. Визитная карточка

Студент: Кривошеин Максим Константинович, группа ИС-2301
Дисциплина: Разработка мобильных приложений, СПбГЭУ
Платформа: ОС Аврора 5.2 (Aurora SDK 5.2.0.180), Qt 5.6, QML / Sailfish Silica

Задание

Разработать приложение «Визитная карточка».

  • Отобразить вводимые поля Фамилия, Имя, Отчество, Телефон, e-mail.
  • Для полей Телефон и e-mail использовать маски ввода.
  • Отобразить фото произвольным изображением в виде Image. Изображение добавить в файл ресурсов (qrc), путь к файлу — qrc:/....
  • Создать одну кнопку «Сохранить». При нажатии выводить на консоль при помощи console.log введённые ФИО, телефон и e-mail.
  • Разработку вести в отдельной ветке, создать MR.

Реализация

Требование Где реализовано
Поля ФИО, телефона и e-mail qml/pages/MainPage.qml — пять TextField, переход между полями по Enter
Маска телефона +7 (999) 999-99-99 qml/components/MaskedTextField.qml — компонент поля с маской: 9 — цифра, остальные символы маски подставляются автоматически, поле подсвечивается ошибкой, пока номер не введён полностью
Маска e-mail RegExpValidator в поле e-mail: недопустимые символы не вводятся, адрес считается корректным только в формате имя@домен.зона
Фото из ресурсов resources.qrc → images/avatar.png, в QML: Image { source: "qrc:/images/avatar.png" }
Кнопка «Сохранить» и console.log функция save() в MainPage.qml; кнопка активна, когда все поля заполнены и прошли проверку масок

Дополнительно над формой показывается превью визитки, которое обновляется при вводе. Пункт вытягиваемого меню «Очистить форму» сбрасывает все поля.

Почему маска телефона сделана своим компонентом, а не через TextInput.inputMask: Silica TextField не публикует inputMask, а если задать его внутреннему редактору, экранная клавиатура ОС Аврора теряет цифры, введённые рядом с литералами маски (), -). Компонент MaskedTextField форматирует номер сам и работает с любой клавиатурой.

Пример вывода в консоль после нажатия «Сохранить»:

[D] save:30 - Визитка: ФИО: Кривошеин Максим Константинович; Телефон: +7 (912) 345-67-89; E-mail: krivoshein.m@example.ru

Структура проекта

ru.krivoshein.BusinessCard.pro      проект qmake
resources.qrc                       файл ресурсов с фотографией
images/avatar.png                   фото для визитки
src/main.cpp                        точка входа приложения
qml/BusinessCard.qml                ApplicationWindow
qml/pages/MainPage.qml              экран визитки и формы
qml/pages/AboutPage.qml             «О приложении»
qml/components/MaskedTextField.qml  поле ввода с маской
qml/cover/DefaultCoverPage.qml      обложка приложения
rpm/ru.krivoshein.BusinessCard.spec описание RPM-пакета

Сборка

Проект открывается в Аврора IDE (Qt Creator из Aurora SDK) и собирается для armv7hl, aarch64 или x86_64. Пакет проходит подпись и валидацию rpm-validator с профилем regular.

Скриншоты

Пустая форма Заполненная форма
Пустая форма Заполненная форма

Лицензия

MIT, см. LICENSE.