Render QWidget no método paint () de QWidgetDelegate para um QListView

estou tendo dificuldades para implementar a renderização de widget personalizado em umQListView. Atualmente, tenho umQListView exibindo meu modelo personalizado chamadoPlayQueue baseado emQAbstractListModel.

Isto está funcionando bem com texto simples, mas agora eu gostaria de exibir um widget personalizado para cada elemento. Então eu subclassifiquei umQStyledItemDelegate para implementar opaint método como este:

void QueueableDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
    if (option.state & QStyle::State_Selected)
        painter->fillRect(option.rect, option.palette.highlight());
    QWidget *widget = new QPushButton("bonjour");
    widget->render(painter);
}

O plano de fundo da seleção é renderizado corretamente, mas nenhum widget é exibido. Eu tentei com simplesQPainter comandos como nos exemplos Qt, e isso está funcionando bem:

void QueueableDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
    if (option.state & QStyle::State_Selected)
        painter->fillRect(option.rect, option.palette.highlight());
    if (option.state & QStyle::State_Selected)
        painter->setPen(option.palette.highlightedText().color());
    painter->setFont(QFont("Arial", 10));
    painter->drawText(option.rect, Qt::AlignCenter, "Custom drawing");
}

Então eu tentei algumas mudanças como:

ChangingQStyledItemDelegate paraQItemDelegateAddingpainter->save() epainter->restore() em torno da renderizaçãoConfigurando a geometria do widget para o tamanho disponível

Mas estou um pouco preso agora, procurei por um tempo na internet, mas não consigo encontrar nenhum exemplo fazendo o que quero, todos falam sobre o widget de edição (que é muito mais fácil) ou o controle desenhado personalizado (predefinido como barras de progresso). Mas aqui eu realmente preciso de um widget personalizado que criei, contendo algum layout, etiquetas e pixmaps. Obrigado pela ajuda

Estou usando o Qt 4.7.3 para GCC no Ubuntu 11.04.

questionAnswers(3)

yourAnswerToTheQuestion