crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 15:54