C++ 为QPushButton启用抗锯齿

C++ 为QPushButton启用抗锯齿,c++,qt,event-handling,antialiasing,C++,Qt,Event Handling,Antialiasing,我有一个QPushButton,我正在通过样式表使用边框图像设置样式。但是,图像质量很差,因为没有使用抗锯齿绘制图像 是否有任何方法可以简单地启用抗锯齿,而无需子类化QPushButton,并为其提供新的画师?我真的不想这样做,因为我正在广泛使用样式表,并且必须创建一组QProperty来模拟现有的伪状态功能。通常可以使用该方法在QPaint对象上设置。这通常是通过对小部件进行子类化并覆盖paintEvent来完成的 根据Qt: 。。。当paintdevice是一个小部件时,QPainter只能

我有一个
QPushButton
,我正在通过样式表使用边框图像设置样式。但是,图像质量很差,因为没有使用抗锯齿绘制图像

是否有任何方法可以简单地启用抗锯齿,而无需子类化
QPushButton
,并为其提供新的画师?我真的不想这样做,因为我正在广泛使用样式表,并且必须创建一组QProperty来模拟现有的伪状态功能。

通常可以使用该方法在QPaint对象上设置。这通常是通过对小部件进行子类化并覆盖paintEvent来完成的

根据Qt:

。。。当paintdevice是一个小部件时,QPainter只能在paintEvent()函数内部或由paintEvent()调用的函数中使用

如果没有子类化,您将仅限于使用截取paintEvent并自己设置标志

您将需要创建一个覆盖对象的事件处理程序的类。此类将使用安装。此类将需要筛选事件以处理您关心的特定事件(QPaintEvent)。然后,它需要创建一个QPaint对象,该对象接收原始对象(使用第二个对象)作为其设备,如图所示。这是因为QWidget继承自QPaintDevice

... 
myView::handlePaintEvent(QObject *obj, QEvent *eve)  
{  
    QPainter painter(static_cast<QWidget *>(obj));
} 
...
。。。
myView::handlePaintEvent(QObject*obj,QEvent*eve)
{  
油漆工(静态铸造(obj));
} 
...
从这里,您应该能够根据需要设置适当的渲染提示

这个相同的事件过滤器类可以安装在许多对象上,因此可以非常快速地添加相同的功能,而无需对任何其他小部件进行子类化