2012-03-17 3 views
0

Ребята Я реализовал свой класс делегатов на основе QStyledItemDelegate, и проблема в том, что он не отображает флажки рядом с текстом, который отображается в спискеView.Мой делегат не отображает флажки

Прежде, чем я воспользуюсь своим делегатом, у меня есть эти флажки, отображаемые в моем спискеView, поэтому я знаю, что проблема лежит в этом классе делегата.
Любые мысли?

EDIT

void Display_Delegate::paint(QPainter* painter, 
           const QStyleOptionViewItem& option, 
           const QModelIndex &index) const 
{ 
    QString model_data = index.data().toString(); 
    QFontMetrics metrics = view_->fontMetrics(); 
    int view_width = view_->width(); 
    auto modified_str = adjust_text(metrics,model_data,view_width);//this just makes the string to fit into view, don't bother about it. 
    QStyleOptionViewItemV4 style_option = option; 
    initStyleOption(&style_option,index); 
    QPalette::ColorGroup color_group = style_option.state & QStyle::State_Selected ? QPalette::Active : QPalette::Inactive; 
    if (style_option.state & QStyle::State_Selected) 
    { 
     // painter->setPen(style_option.palette.color(color_group, QPalette::Highlight)); 
     painter->setBackgroundMode(Qt::OpaqueMode); 

     QColor color(148,231,245,100); 
     painter->setBackground(QBrush(color)); 
    } 
    else 
    { 
     painter->setPen(style_option.palette.color(color_group, QPalette::Text)); 
    } 

    painter->drawText(option.rect,modified_str); 
} 
+3

Я думаю о высоком банановом дайкири прямо сейчас. Как насчет тебя? О, и, возможно, мир мечты, где люди с проблемами программирования публикуют свой код. –

+0

@KerrekSB ok, я отправлю код для paint fnc в моем делегате, без проблем. Вы можете предположить, что модель и прокси-модель реализованы правильно (они есть, и они работают правильно с делегатом dflt) – smallB

+0

@KerrekSB смешно, как люди быстро дают +1, хотя этот +1 был указан после того, как я фактически отредактировал свой OP, Ты думаешь? – smallB

ответ

1
Qt::CheckState QStyleOptionViewItemV4::checkState 

If this view item is checkable, i.e., ViewItemFeature::HasCheckIndicator is true, checkState 
is true if the item is checked; otherwise, it is false. 

я нашел в методах это довольно неясное упоминание имеющий индикатор проверки. В нем говорится, что если вы хотите сделать элемент «проверенным», установите этот style option. Так что попробуйте что-то вроде:

style_option.ViewItemFeatures = QStyleOptionViewItemV2::HasCheckIndicator; 
Смежные вопросы