crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Определение точных координат на графике в контекстном меню, как реализовать корректно?
AD
  опции профиля:
сообщение 15.7.2009, 15:11
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


[attachment=708:graphics...rdinates.JPG]

Проблема в том, что координаты на осях и координаты в контекстном меню не совпадают. Как получить точные координаты от графика?

Вот так реализовано меню:
{
// ......................................................
private:
        void viewCoordinateCtx(QPointF* coord);
    void createContextMenu(QPointF* coord);
protected:
    virtual void contextMenuEvent(QContextMenuEvent* events);
// ......................................................
};

/// Отображение координат в данной точке
void GraphicDisplay::viewCoordinateCtx(QPointF* coord)
{
    QString strX = (language_flag) ? "Value along axis X:\t" : "Значение вдоль оси X:\t";
    QString strY = (language_flag) ? "Value along axis Y:\t" : "Значение вдоль оси Y:\t";
    strX += QString::number(coord -> x(), 'f', 3);  strY += QString::number(coord -> y(), 'f', 3);

    contextMenu -> addAction(strX);
    contextMenu -> addAction(strY);

    /// .....
}

/// Создание контекстного меню
void GraphicDisplay::createContextMenu(QPointF* coord)
{
    if(!contextMenu -> actions().isEmpty()) contextMenu -> clear();
    viewCoordinateCtx(coord);
}

/// Отображение контекстного меню
void GraphicDisplay::contextMenuEvent(QContextMenuEvent* events)
{
    QPointF coordinate = initXY(&events -> pos());
    createContextMenu(&coordinate);

    contextMenu -> exec(events -> globalPos());
}


Есть мысли, где возможна ошибка?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
4 страниц V  « < 2 3 4  
Начать новую тему
Ответов (30 - 35)
AD
  опции профиля:
сообщение 21.7.2009, 18:36
Сообщение #31


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(BRE @ 21.7.2009, 19:19) *
Координаты те же выводятся в меню?
Что за визир? Почему нет плавности? :)

координаты те же. График тот же - то есть с погрешностью....

Визир - viewfinder. Не знаю почему нет плавности, но двигается скачкообразно.

Сообщение отредактировал AD - 21.7.2009, 18:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 21.7.2009, 18:54
Сообщение #32


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AD @ 21.7.2009, 19:36) *
координаты те же. График тот же - то есть с погрешностью....

При длине вертикальной шкалы 800 единиц и размере виджета по вертикале 100 точек, при сдвиге мышки на одну точку шаг на графике будет составлять 8 единиц, при размере виджета 200 точек - 4 единицы.... От этого никуда не деться, только если не сделать длину оси в точках равной длине в единицах. :)

Цитата(AD @ 21.7.2009, 19:36) *
Визир - viewfinder. Не знаю почему нет плавности, но двигается скачкообразно.

Почему так происходит? Ведь ты работаешь с экранными координатами. :blink:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 21.7.2009, 21:25
Сообщение #33


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(BRE @ 21.7.2009, 19:54) *
Почему так происходит? Ведь ты работаешь с экранными координатами. :blink:

Не знаю разбираться придется завтра.

А вот с координатами, выходит, надо искать метод, который сможет дать более точный результат. Т.е.
events -> pos() - не подходит. Ты знаешь как сделать предложенный Юрием курсор графика? Я вообще в не понимаю с чего начать для его реализации?

Сообщение отредактировал AD - 21.7.2009, 21:27
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 21.7.2009, 21:59
Сообщение #34


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AD @ 21.7.2009, 22:25) *
А вот с координатами, выходит, надо искать метод, который сможет дать более точный результат. Т.е.
events -> pos() - не подходит.

Так вариантов нет, шаг в одну точку на экране это 8 точек на графике (при тех условиях которые я приводил выше). Точнее двигать мышь ты не сможешь. ;)

Цитата(AD @ 21.7.2009, 22:25) *
Ты знаешь как сделать предложенный Юрием курсор графика? Я вообще в не понимаю с чего начать для его реализации?

Нужно посмотреть, подумать.
У меня сейчас форум только по диагонале читать получается. Времени не много... :(

Сообщение отредактировал BRE - 22.7.2009, 7:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 22.7.2009, 15:32
Сообщение #35


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(BRE @ 21.7.2009, 22:59) *
Так вариантов нет, шаг в одну точку на экране это 8 точек на графике (при тех условиях которые я приводил выше). Точнее двигать мышь ты не сможешь. ;)

На мой взгляд, вариант Юрия и есть альтернатива указанному алгоритму. Сейчас, после того как поправил разбор времени (mktime), буду думать как его реализовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 22.7.2009, 16:44
Сообщение #36


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Описание проблемы перемещения визира находится здесь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  « < 2 3 4
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 6.6.2025, 23:08