Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Patrin Andrey от Декабрь 20, 2012, 08:21



Название: QGraphicsObject::paint drawText градиент сверху вниз
Отправлено: Patrin Andrey от Декабрь 20, 2012, 08:21
Имеем такой код:
Код:
void GradientText::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRect rect = QRect(0,0, boundingRect().width(), boundingRect().height());

QLinearGradient grad(0, 0, 0, rect.height()); // << вертикальный
// QLinearGradient grad(0, 0, rect.width(), 0); // << горизонтальный

grad.setColorAt(0, "white");
grad.setColorAt(1, "black");

painter->setBrush(QBrush("green"));
painter->drawRect(rect);

painter->setFont(QFont("Times", 50, QFont::Normal)) ;
painter->setPen(QPen(QBrush(grad), 0));

painter->drawText(rect, "text1234");
}

По горизонтали текст заливается нормально, а по вертикали применяется цвет указанный в grad.setColorAt(0, "white");
(http://s8.postimage.org/iwbsoam8x/image.jpg) (http://postimage.org/image/iwbsoam8x/)
(http://s1.postimage.org/66qpsus9n/image.jpg) (http://postimage.org/image/66qpsus9n/)

Как починить? А ещё лучше как задать градиент для qml текста, без написания своего компонента.


Название: Re: QGraphicsObject::paint drawText градиент сверху вниз
Отправлено: porup от Декабрь 21, 2012, 16:38
А вот если величину шрифта уменьшить до 47, тогда градиент рисуется