crossplatform.ru

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


  Ответ в QGraphicsItem отрисовка по нажатию кнопки вопрос...
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Yaroslav Дата 28.2.2011, 16:35
  Если уже было решение этой проблемы пожалуйста напишите..
У меня появился вариант решения этой проблемы через mouseHover, только не знаю или он правельный...(
ViGOur Дата 28.11.2008, 11:01
  а вот с этим уже играться нужно и читать, я пока не заморачивался...
AntonTatu Дата 28.11.2008, 1:18
 
Цитата
надеюсь идея понятна...


идея совершенно неправильная как оказалось... вот что написано у Макса Шлее:

"Класс QGraphicsitem предоставляет возможность определения столкновений
элементов. Это задача выполняется с помощью методов QGraphics:: shape
и QGraphicsitem:: collideswith Если вы создаете свой класс элемента, то
для определения столкновенЂий необходимо будет перезаписать метод
QGraphicsitem:: shape. Этот метод должен возвращать форму элемента в
локальных координатах. Благодаря этому класс QGraphicsitem будет
самостоятельно производить распознавание столкновений.
"

неужели никто не сталкивался с такой проблемой !!! очень нужно.... долго уже мучаюсь...... маленький примерчик плиииз.....
ViGOur Дата 27.11.2008, 16:45
  Ну например:
// QList<QRect> rectList, список окружностей
// QRect rect, координаты окружности
bool bEx=false;
foreach( rect, rectList)
{
   QRegion region( rect, QRegion::Ellipse);
   if( region.contains( point))  // QPoint point, координаты мышки
   {
        // мы попали в окружность
        bEx = true;
        break;
   }
}

if( !bEx)
{
   // Рисуем окружность и прочее
}
надеюсь идея понятна...
AntonTatu Дата 27.11.2008, 15:38
 
Цитата(ViGOur @ 27.11.2008, 15:31) *
Тебе в памяти нужно будет держать регионы, или приводить к ним, а затем при клике получив точку клика проверять попал ты в регион или нет, это можно сделать с помощью: bool QRegion::contains ( const QPoint & p ) const.


а небольшой примерчик можно, в принципе как я уже сказал все выведенные на сцену итымы я засовываю в список, и могу получать их координаты, подозреваю что и регионы там тоже хранятся, как проверять попал я в регион или нет ?
ViGOur Дата 27.11.2008, 15:31
  Тебе в памяти нужно будет держать регионы, или приводить к ним, а затем при клике получив точку клика проверять попал ты в регион или нет, это можно сделать с помощью: bool QRegion::contains ( const QPoint & p ) const.
AntonTatu Дата 27.11.2008, 15:10
  мне нужно каким то образом делать вот что:

при нажатии на кнопку мышки определять что я нажал не на пустое поле а на кружок, и не рисовать рядом новый, соответственно при нажатии на пустое поле нарисовать кружок...., как рисовать я знаю, как определить что под мышкой находится кружок ?
ViGOur Дата 27.11.2008, 14:56
  Если я тебя правильно понял, то тебе нужно поиграться с регионами, на наличие пересечений...
AntonTatu Дата 27.11.2008, 12:37
  Всем привет.!!! Вопрос такой:

Создаю собственный класс унаследованный от QGraphicsItem, определяю в нем методы:
MyItem::boundingRect(); MyItem::painter (рисую круг), MyItem::mousePressEvent, MyItem::mouseMoveEvent, MyItem::mouseReleaseEvent, разрешаю перетаскивать MyItem мышкой (setFlag(ItemIsMovable);

Создаю собственный класс унаследованный от QGraphicsView, определяю в нем метод:
MyView::mousePressEvent

определяю сцену....


При нажатии кнопки мышки срабытывает MyView::mousePressEvent и отрисовывает в точке соответствующего положения мышки кружочек, (при этом созданный Item записываю в список) можно их нарисовать много и перетаскивать, только понять не могу как сделать так что бы нельзя было рисовать в месте в котором уже кружок нарисован ?, т.е. не допустить наложения двух кружочков на сцене..

Пробовал в методе MyView::mousePressEvent сравнивать текущее положение мышки с положениями Item-ов записанными в список и в зависимости от этого рисовать или не рисовать новый, но к сожалению это не хороший путь в сохраненную точку невозможно попасть....

ЗЫ: прочитал свой вопрос.....:) если понять что же я хочу трудно, скажите попробую переформулировать...
ЗЫЫ: перерыл всю возможную литературу, ответа не нашел но есть же способ мне бы малинький примерчик.....
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 10.4.2020, 14:29