2012-03-17 9 views
0

Guys QStyledItemDelegateに基づいてデリゲートクラスを実装しました。問題は、listViewに表示されるテキストの横にチェックボックスが表示されないことです。私の代理人はチェックボックスを表示しません

私の代理人を使用する前に、これらのチェックボックスをlistViewに表示したので、このデリゲートクラスに問題があります。
ご意見はありますか?

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、私は代理人に塗料fncのコードを投稿します。問題ありません。あなたはモデルとプロキシモデルが正しく実装されていると思うかもしれません(彼らはdfltデリゲートで正しく動作しています) – smallB

+0

@KerrekSB実際に+1をしても、あなたは思いますか? – 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; 
関連する問題