Использование QPen, который является косметическим, но не шириной ноль

Я недавно перенес приложение из Qt 4 в Qt 5. Я использовал по умолчанию QPen() с нулевой шириной, которая поэтому была косметической. После миграции я не мог оставить его по умолчанию (перо по умолчанию изменилось на ширину 1 и поэтому не косметическое). Поэтому я просто добавил вызов setCosmetic(True) поэтому мои ручки были косметическими, но шириной 1.

Однако это привело к неожиданному (для меня) поведению. В частности у меня были некоторые QGraphicsEllipseItem объекты с неправильным поведением выделения: в частности, очень маленький эллипс, масштабированный до большого размера, будет иметь гораздо больший размер shape() чем это было нарисовано. Она была нарисована с помощью косметической ручки (1 пиксель), но форма была рассчитана так, как если бы размер ручки был увеличен.

Это легко исправить: я просто установил QPen ширина до 0. Но это подняло вопрос в моей голове.

Какова предполагаемая семантика косметической ручки с ненулевой шириной? Это поведение QGraphicsEllipseItem предназначен, и с полезным применением, или это неожиданно?

1 ответ

Смотрите документацию для QGraphicsItem::paint():

QGraphicsItem не поддерживает использование косметических ручек с ненулевой шириной.

Другие вопросы по тегам