Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: n4ela от Сентябрь 25, 2009, 01:46



Название: Вывести картинку с возможностью отмечать на ней координаты
Отправлено: n4ela от Сентябрь 25, 2009, 01:46
Доброго времени суток.
Столкнулся с такой задаче: Надо выводить картинку(карту) и сделать так что бы на ней можно было бы отмечать мышкой города. Я так понимаю что надо в какой то элемент вывести картинку, в месте клика рисовать какой нибудь кружок, и считывать координаты клика.
Вот только не знаю в какой элемент лучше вывести картинку и как перехватывать клик с координатами. В какую сторону мне смотреть? И еще что делать если окно может быть развернуто на весь экран, ведь координаты будут браться относительно монитора, а не относительно этой картинки.


Название: Re: Вывести картинку с возможностью отмечать на ней координаты
Отправлено: Pie_Jesu от Сентябрь 25, 2009, 07:27
Для всех целей подойдет класс, наследованный от QWidget'а. С помощью класса QPainter и переопределения методов paintEvent(), resizeEvent() наносите на его поверхность карту. С помощью переопределения метода mousePressEvent() определяйте места нажатия на него и выполняйте соответствующие действия. Для решения проблемы с координатами следует завести свою систему координат, начало которой желательно должно совпадать с началом системы координат виджета (левый верних угол - (0,0)); и учитывать, что на экране видима не вся карта, а только ее кусок, который равен размеру виджета. Кликая в точке на виджете, и зная отображаемое смещение карты, можно точно определить точную точку и на самой карте. А с размерами окна справится сам виджет =)


Название: Re: Вывести картинку с возможностью отмечать на ней координаты
Отправлено: west от Сентябрь 25, 2009, 09:15
QPoint mapToGlobal ( const QPoint & pos ) const
QPoint mapFromGlobal ( const QPoint & pos ) const
QPoint mapToParent ( const QPoint & pos ) const
QPoint mapFromParent ( const QPoint & pos ) const
QPoint mapTo ( QWidget * parent, const QPoint & pos ) const
QPoint mapFrom ( QWidget * parent, const QPoint & pos ) const
Это все методы QWidget


Название: Re: Вывести картинку с возможностью отмечать на ней координаты
Отправлено: Igors от Сентябрь 25, 2009, 11:19
Напрашивается создать QGraphicsItem  для каждого города, это сделает все отслеживания намного проще.
Если есть tools - почему бы их не использовать?