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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: QGraphicsItem и трансформации систем координат  (Прочитано 23229 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #30 : Август 10, 2011, 10:44 »

Код
C++ (Qt)
void QPen::setCosmetic ( bool cosmetic )
А теперь внимательно читаем: QGraphicsItem does not support use of cosmetic pens with a non-zero width.
И? Всё он прекрасно поддерживает. Да и как он может это не поддерживать коли я рисую через QPainter?
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #31 : Август 10, 2011, 11:19 »

Я не могу задать для айтемов ручек такой boundingRect, который бы распространялся на все грани родительского айтема, чтобы ресайзить можно было за края айтема, а не толкьо за ручки, ну удобнее так просто-напросто.
Для прямоугольника - да, удобнее. А вот хотя бы круга или треугольника - какой курсор показывать на resize? Для чуть более сложной фигуры эта техника может вообще оказаться нереальной/невыполнимой. Зачем же обещать это пользователю?

Если говорить о haтdles, то обычно возникают др. проблемы. Напр: есть 10 (или больше айтемов каждый из которых может иметь handles). Пользователь выбрал все 10. - у всех показать handles или как?  Улыбающийся
Др. ситуация: один из айтемов полностью перекрыт другими. Как пользователь сможет выбрать перекрытый? Должны ли показываться handles если айтем выбран но перекрыт?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #32 : Август 10, 2011, 11:24 »

Для прямоугольника - да, удобнее. А вот хотя бы круга или треугольника - какой курсор показывать на resize? Для чуть более сложной фигуры эта техника может вообще оказаться нереальной/невыполнимой. Зачем же обещать это пользователю?
А с чего Вы взяли, что у ТС, да и у многих других, фигуры будут сложнее прямоугольника?

Цитировать
Др. ситуация: один из айтемов полностью перекрыт другими. Как пользователь сможет выбрать перекрытый? Должны ли показываться handles если айтем выбран но перекрыт?
Выбранный элемент всегда должен иметь z-ку больше других и таких вопросов не будет.
« Последнее редактирование: Август 10, 2011, 11:27 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
iroln
Гость
« Ответ #33 : Август 10, 2011, 11:45 »

Для прямоугольника - да, удобнее. А вот хотя бы круга или треугольника - какой курсор показывать на resize? Для чуть более сложной фигуры эта техника может вообще оказаться нереальной/невыполнимой. Зачем же обещать это пользователю?

Если говорить о haтdles, то обычно возникают др. проблемы. Напр: есть 10 (или больше айтемов каждый из которых может иметь handles). Пользователь выбрал все 10. - у всех показать handles или как?  Улыбающийся
Др. ситуация: один из айтемов полностью перекрыт другими. Как пользователь сможет выбрать перекрытый? Должны ли показываться handles если айтем выбран но перекрыт?

Когда фигура сложнее прямоугольника, там появляется много других проблем и функциональность "ручек" там не самая большая проблема. Многоугольник или свободную кривую вообще не понятно как редактировать с помощью ручек. Можно редактировать с использованием сплайнов для сглаживания, можно без, можно вообще использовать NURB-сплайны, тогда ручки вообще будут лежать вне граней и т.д. В данной задаче у меня ничего сложнее прямоугольника редактировать не требуется. Слишком обобщать, универсализировать и абстрагировать бывает наоборот вредно.

Сейчас у меня при выборе рамки ее zValue устанавливается больше, чем zValue всех остальных, поэтому он автоматом выходит на передний план. Но естественно, что если одна рамка полностью перекрыта другой рамкой, то перекрытую не получится вытащить, не отодвинув ту, которая перекрывает. При перекрытии "ручки" перекрытых рамок не скрываю, всё прозрачно, а зачем их скрывать? Вообще сейчас я ручки убираю только если isResizable == false.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #34 : Август 10, 2011, 11:51 »

Но естественно, что если одна рамка полностью перекрыта другой рамкой, то перекрытую не получится вытащить, не отодвинув ту, которая перекрывает.
Для таких случаев нужно иметь список элементов при клике (дабл-клике?) на который элемент сцены поднимется выше других)
Записан

Qt 5.11/4.8.7 (X11/Win)
iroln
Гость
« Ответ #35 : Август 10, 2011, 11:57 »

Для таких случаев нужно иметь список элементов при клике (дабл-клике?) на который элемент сцены поднимется выше других)
Ну это уже обеспечивается функциональностью приложения, в котором инструментарий используется. Это конечно же есть у меня в программе. Из-за специфики задачи этих рамок может быть до нескольких тысяч, естественно их список есть. Улыбающийся
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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