Если не найдешь, как в QtQuick, то вот как я делал на с++: свой QGraphicsEffect, вот реализация метода draw():
C++ (Qt)
void ViewportElideEffect::draw(QPainter *painter)
{
if (!m_view->isElide(Qt::AlignRight))
{
drawSource(painter);
return;
}
QPoint offset;
QPixmap pixmap = sourcePixmap(
Qt::DeviceCoordinates,
&offset,
QGraphicsEffect::NoPad);
QRectF rect = m_view->boundingRect();
rect.moveTo(rect.width() - 25, 0);
rect.setWidth(28); //### hack to fix not fully filled part (sometimes)
rect.setHeight(rect.height() + 1);
QLinearGradient g(rect.topLeft(), rect.topRight());
g.setColorAt(0, Qt::black);
g.setColorAt(0.8, Qt::transparent);
QTransform worldTransform = painter->worldTransform();
worldTransform *= QTransform::fromTranslate(-offset.x(), -offset.y());
QPainter pixmapPainter(&pixmap);
pixmapPainter.setRenderHints(painter->renderHints());
pixmapPainter.setWorldTransform(worldTransform);
pixmapPainter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
pixmapPainter.fillRect(rect, QBrush(g));
painter->setWorldTransform(QTransform());
painter->drawPixmap(offset, pixmap);
}
Здесь m_view - это объект, на который наложен эффект; те эффект жестко привязан к определенному классу, если чуть подправить, то можно сделать для общего случая.
P.S. Кстати, возможно тут много действий (например можно закешировать создание градиента), может кто увидит и оптимизирует)