Название: Программирование хотспотов на картинки Отправлено: Разуев Максим от Июнь 21, 2007, 03:17 Может кто нибудь помочь с созданием хотспотов в Qt. Может кто занимался. А то я никогда не занимался. Пока понял только что надо использовать QGraphicsView. Но не понял как.
Название: Программирование хотспотов на картинки Отправлено: SABROG от Июнь 21, 2007, 07:44 Ты хочешь сделать как здесь ? http://www.htmlcodetutorial.com/images/images_famsupp_220.html
Название: Программирование хотспотов на картинки Отправлено: Разуев Максим от Июнь 21, 2007, 07:52 Примерно.
Только средствами Qt и C++. А не HTML. Мне необходимо дать пользователю задать хотспоты на изображении. А потом обрабатывать нажатия на них. Название: Программирование хотспотов на картинки Отправлено: SABROG от Июнь 21, 2007, 08:11 Посмотри пример examples\graphicsview\elasticnodes
Там есть круглые точки, которые обрабатывают нажатие мышкой. Название: Программирование хотспотов на картинки Отправлено: goer от Июнь 21, 2007, 09:15 Graphicsview хорошо, но не всегда. Иногда связка QWidget & mouse...Event() & QPolygon оказывается не только мощнее, но и вообще единственным способом решить задачу.
Название: Программирование хотспотов на картинки Отправлено: Разуев Максим от Июнь 24, 2007, 20:41 Примеры смотрел. Много подчерпнул по QGraphicsView. Но ничего по хотспотам.
Я прошу подсказать пример вообще как это организовать. Можно кстати и пример по хотспотам и без Qt. Мне хотелось бы увидев основной принцип реализации. Название: Программирование хотспотов на картинки Отправлено: Racheengel от Июнь 24, 2007, 21:53 1. Создаешь набор полигонов QPoligon из точек, по полигону для каждого хотспота.
2. В виджете переопределяешь мышыные эвенты, которые будешь юзать (Press, Move, Click...) от задачи зависит. 3. В эвентах проверяешь для каждого полигона попадание в него курсора мыши, через например bool QPolygon::containsPoint ( const QPoint & pt, Qt::FillRule fillRule ) const 4. С найденным полигоном делаешь то, что тебе нужно. Название: Программирование хотспотов на картинки Отправлено: Разуев Максим от Июнь 25, 2007, 15:01 Проблема в задании полигона интерактивно пользователем.
Пользователь должен как то выбрать область на картинке и указать это хотспот. По идее надо как то поверх картинки выводить тот самый QPolygon, мне хватит и QRect. Перемещать его по картинке стрелками и изменять размер например стрелки + Shift. У меня проблема в том что я никогда не занимался рисованием на форме или в компоненте (Если бы был аналог TCanvas из C++Builder). Я хотел бы выяснить каким образом это можно реализовать. А то я хреново читаю по Английски, и с трудом разбираюсь в help по QGraphicsView. добавлено спустя 3 часа 37 минут: Немного продвинулся. Получаеися вывести прямоугольный контур поверх изображения. Но немогу понять как запретить прямоугольнику выходить за пределы изображения Я добавил QGraphicsRectItem в QGraphicsScene и установил для него флаг isMovable, т.е. прямоугольник свободно перетаскивается мышью. Но при перетаскивании он может вылазить за пределы изображения (setSceneRect я задаю раной размеру изображения, сцена теперь не увеличивается но на прямоугольник это не влияет). добавлено спустя 7 часов 44 минуты: Еще одна проблема. В QGraphicsItem есть функция type(). По идее она должна возвращать тип элемента, в assistent написано что для стандартных элементов она возвращает уникальное значение. Но нигде не указаны эти значения. Может кто знает. |