Russian Qt Forum
Ноябрь 24, 2024, 05:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Система координат окна и QWebView  (Прочитано 2006 раз)
Larry
Гость
« : Январь 13, 2016, 10:13 »

Добрый день.
Снова возникла проблема с QWebView...При рисовании примитивов поверх браузера происходят какие-то глюки при вызове слота qt из javascript. При рисовании все хорошо, но как только при нажатии правой кнопки мыши вызываю контекстное меню из qt, то последняя точка резко прыгает в правую сторону (если это полигон), а окружности и прямоугольники могут увеличиваться в размерах...Но контекстное меню выводится в месте последнего нажатия мышки, т.е. правильно. На скрине можно увидеть, то что происходит. Синяя окружность это последнее нажатие кнопки мыши...
Вот вывод в лог позиции точек:

Код:
map point:  "Point(49, 114)"
cursor point:  QPoint(369,299)
map point:  "Point(154, 193)"
cursor point:  QPoint(474,378)
map point:  "Point(16, 285)"
cursor point:  QPoint(336,470)
map point:  "Point(16, 285)"
cursor point:  QPoint(336,470)

map point - позиция в браузере
cursor point - позиция по курсору

Это происходит не всегда...т.е. совсем не понятно, но по выводу видно, что данные как-будто наоборот, хотя вроде бы в документации написано, что система координат qt в левом верхнем углу, а судя по логу это не так...
Записан
Larry
Гость
« Ответ #1 : Январь 13, 2016, 11:31 »

Нашел в чем причина была, но пока не нашел как обойти. Не понял, как это связано, но суть в том, что при выводе меню координаты берутся относительно desktop, а не окна. Как вывести контекстное меню относительно окна? Вот вывод контекстного меню:
Код:
QMenu* menu = new QMenu(this);

QAction* actionRemoveLastPoint = new QAction("Remove last point", this);
actionRemoveLastPoint->setProperty("Item", 1);
QAction* actionCreate = new QAction("Create shape", this);
actionCreate->setProperty("Object", object);
actionCreate->setProperty("Item", 2);
QAction* actionCancel = new QAction("Cancel", this);
actionCancel->setProperty("Item", 3);

menu->addAction(actionRemoveLastPoint);
menu->addAction(actionCreate);
menu->addAction(actionCancel);

connect(actionCreate, SIGNAL(triggered()), this, SLOT(slotChoiceItemContextMenu()));
connect(actionRemoveLastPoint, SIGNAL(triggered()), this, SLOT(slotChoiceItemContextMenu()));
connect(actionCancel, SIGNAL(triggered()), this, SLOT(slotChoiceItemContextMenu()));

menu->exec(this->mapToParent(QPoint(point_x, point_y)));
« Последнее редактирование: Январь 13, 2016, 14:38 от Larry » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 21.