일반적으로 setRenderHints 메서드를 사용하여 QPainter 개체에서 Anti-aliasing flag을 설정할 수 있습니다. 이는 일반적으로 위젯을 서브 클래스 화하고 paintEvent를 재정의 (override)함으로써 수행됩니다.
... paintdevice이 위젯되면 QPainter를가 paintEvent() 함수 내부 또는 paintEvent() ...
호출 기능 만 사용할 수 있습니다 Qt의
Docs for QPainter 따르면
서브 클래 싱하지 않으면 Event Filter을 사용하여 paintEvent를 가로 채고 자신을 설정하는 것으로 제한됩니다.
개체의 이벤트 처리기를 재정의하는 클래스를 만들어야합니다. 이 클래스는 QObject::installEventFilter
을 사용하여 설치됩니다. 이 클래스는 관심있는 특정 이벤트 (QPaintEvent)를 처리하기 위해 이벤트를 필터링해야합니다. 그런 다음이 qtforum post과 같이 원래 개체 (두 번째 constructor 사용)를 장치로 사용하는 QPainter 개체를 만들어야합니다. 이것은 QWidget이 QPaintDevice를 상속 받기 때문에 가능합니다.
...
myView::handlePaintEvent(QObject *obj, QEvent *eve)
{
QPainter painter(static_cast<QWidget *>(obj));
}
...
여기에서 필요한 렌더링 힌트를 설정할 수 있습니다.
이 동일한 이벤트 필터 클래스는 수많은 객체에 설치할 수 있으므로 다른 위젯을 하위 클래스로 분류하지 않고 동일한 기능을 매우 빠르게 추가 할 수 있습니다.