Как отключить сглаживание для виджета?

#qt #qt5

#qt #qt5

Вопрос:

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

 painter.setRenderHint(QPainter::Antialiasing, false);
painter.setRenderHint(QPainter::SmoothPixmapTransform, false);
  

Теперь я переписываю этот виджет как унаследованный от QWidget и использую собственные QLabel, QButton и таблицу стилей QTs. Есть ли способ отключить сглаживание для виджета и его дочерних элементов?

Комментарии:

1. Речь идет только о сглаживании текста / шрифта? Если да, QFont setStyleStrategy(QFont::NoAntialias); может быть решением.

2. Я боюсь, что это также повлияет на границы виджета. Для шрифта вы имеете в виду вставку auto f = font(); f.setStyleStrategy(QFont::NoAntialias); setFont(f); в каждый дочерний конструктор виджетов?

3.Да, но (в зависимости от вашего приложения), возможно, вы можете обойтись без настройки шрифта для всего приложения сразу с помощью QApplication::setFont() doc.qt.io/qt-5/qapplication.html#setFont . Но, конечно, если вам также нужно установить это для границ, это (по крайней мере, само по себе) не решит вашу проблему…