Skip to content

Instantly share code, notes, and snippets.

@dkormalev
Created September 19, 2012 08:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dkormalev/3748554 to your computer and use it in GitHub Desktop.
Save dkormalev/3748554 to your computer and use it in GitHub Desktop.
Qt Notes Podcast s02e01 конкурс
Необходимо создать (на чистом QML или на QML с использованием C++) менеджер экранов,
аналогичный используемому в Android, MeeGo, Symbian, etc.
Ключевым отличием является использование грида, а не одномерного списка экранов.
То есть, например, мы можем создать сетку экранов 3x3, по которой будет перемещаться пользователь
(вверх-вниз-влево-вправо). Именно вниз-вверх-влево-вправо, по диагонали не надо.
В окне приложения всегда виден один экран,
при драге мышкой из любой точки экрана в одну из сторон -
переключаемся на другой экран (если он есть в гриде экранов конечно).
Любые мышиные события должны отрабатывать на экранах.
Как нажатие кнопок мыши (например, чтобы добавить на экран кнопку),
так и события о перемещении при зажатой кнопке мыши (например, чтобы добавить на экран слайдер).
Должна присутствовать логичная анимация переключений экранов.
Нам не важно, что это будет - просто компонент или готовое приложение или даже целая оконная система.
Лишь бы мы смогли это запустить на обычном десктопном Qt 4.8 через qmlviewer (для чисто кумльного варианта)
или после компиляции через qmake && make (в случае варианта с плюсами).
Категорически приветствуются любые дополнительные фичи
в добавок к выше описанным (как пример доп. фичи - зацикленность экранов при выставлении
соответствующего property в true, то есть с самого верхнего можно переместиться
на самый нижний в той же колонке экранов).
Грид экранов должен задаваться в QML-стиле. Например для грида 2x2 будет что-то наподобие:
ScreensGrid {
ScreensRow {
ScreenItem {
}
ScreenItem {
}
}
ScreensRow {
ScreenItem {
}
ScreenItem {
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment