Всем привет. Приведу сразу пример кода:
DrawWidget::DrawWidget(QWidget *parent) : QWidget(parent)
{
painter = new QPainter;
//
this->rect = new QRect(0, 0, 50, 50);
this->color = new QColor(255, 0, 0, 255);
this->resize(600, 400);
}
void DrawWidget::addBlur()
{
QGraphicsBlurEffect* effect = new QGraphicsBlurEffect();
effect->setBlurRadius(10);
this->setGraphicsEffect(effect);
}
void DrawWidget::setBounds(QRect* rect) {this->rect = rect;}
void DrawWidget::setColor(QColor* color) {this->color = color;}
void DrawWidget::paintEvent ( QPaintEvent * event )
{
QWidget::paintEvent(event);
//
if (painter->begin(this)) {
painter->setPen(QPen(Qt::NoPen));
painter->setBrush(QBrush(*color));
painter->drawRect(*rect);
painter->end();
} else {
qDebug() << "not begin";
}
}
И пример его использования в main:
DrawWidget* draw1 = new DrawWidget(&mainWidget);
draw1->setBounds(new QRect(50, 50, 100, 100));
draw1->addBlur();
//
DrawWidget* draw2 = new DrawWidget(&mainWidget);
draw2->setBounds(new QRect(50, 50, 100, 100));
draw2->setColor(new QColor(255, 255, 0, 255));
Вот как выглядит результат на обычном мониторе:
А вот как выглядит на мониторе с retina дисплеем, в частности на моем MacBook и iPhone 6:
Кто знает почему так происходит?
Спасибо.