Listview不会一直显示

时间:2013-10-23 07:19:25

标签: qt qt4

我在显示列表视图时遇到问题。我们正在为这个列表设置一个自定义的项目委托,我们会覆盖绘制事件。问题是UI上没有显示列表当它被加载时。列表显示在我们生成列表中的鼠标按事件时。请给出你的想法并建议解决这个问题。

我正在添加自定义代理代码,以便您更好地理解。

    void CItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
    painter->save();

    if( option.state & QStyle::State_Sunken )
    {
        painter->fillRect( option.rect, option.palette.highlight() );
    }
    if( m_connectionStatus && ( m_selectedIndex == index.row() ) )
    {
        QPixmap selectionIndicator = icons[10];
        painter->drawPixmap( option.rect.width() - selectionIndicator.width() - 10, option.rect.top() + option.rect.height() / 2 - selectionIndicator.height() / 2, selectionIndicator );
    }

    // Draw the icon
    QVariantList fields = index.data().toList();
    QPixmap  icon = icons[fields[IconIndex].toInt()];

    painter->drawPixmap( 14, option.rect.top() + option.rect.height() / 2 - icon.height() / 2, icon );

    QFont f( painter->font() );
    f.setPixelSize( 23 ) ;
    f.setBold( true );
    painter->setFont( f );

    // Draw the error description text, truncated if necessary
    static const int TextLeftMargin = 80;
    static const int TextTopBottomMargin = 25;

    QString elidedDescription = painter->fontMetrics().elidedText( fields[Description].toString(), Qt::ElideRight, 352 );
    painter->drawText( option.rect.adjusted( TextLeftMargin, TextTopBottomMargin, 0, 0 ),  Qt::AlignLeft, elidedDescription );

    // Divider
    QRect dividerRect = option.rect;
    dividerRect.setTop( dividerRect.bottom() );
    QLinearGradient gradient( 0, 0, option.rect.width() / 2, 0 );
    gradient.setColorAt( 0, QColor( 144, 144, 144, 0 ) );
    gradient.setColorAt( 1, QColor( 144, 144, 144, 255 ) );
    gradient.setSpread( QGradient::ReflectSpread );
    painter->fillRect( dividerRect, gradient );

    painter->restore();


}

0 个答案:

没有答案