Использование QPen, который является косметическим, но не шириной ноль
Я недавно перенес приложение из Qt 4 в Qt 5. Я использовал по умолчанию QPen()
с нулевой шириной, которая поэтому была косметической. После миграции я не мог оставить его по умолчанию (перо по умолчанию изменилось на ширину 1 и поэтому не косметическое). Поэтому я просто добавил вызов setCosmetic(True)
поэтому мои ручки были косметическими, но шириной 1.
Однако это привело к неожиданному (для меня) поведению. В частности у меня были некоторые QGraphicsEllipseItem
объекты с неправильным поведением выделения: в частности, очень маленький эллипс, масштабированный до большого размера, будет иметь гораздо больший размер shape()
чем это было нарисовано. Она была нарисована с помощью косметической ручки (1 пиксель), но форма была рассчитана так, как если бы размер ручки был увеличен.
Это легко исправить: я просто установил QPen
ширина до 0. Но это подняло вопрос в моей голове.
Какова предполагаемая семантика косметической ручки с ненулевой шириной? Это поведение QGraphicsEllipseItem
предназначен, и с полезным применением, или это неожиданно?
1 ответ
Смотрите документацию для QGraphicsItem::paint()
:
QGraphicsItem не поддерживает использование косметических ручек с ненулевой шириной.