> > I’m still struggling with how to customize the selection color for items on 
> > a
> > QTableView
> 
> I use a QStyledItemDelegate.
> In the paint(painter,option,index) method I create my own QPalette based
> on
> selection etc and then call the base class paint function.
> 
>      QStyleOptionViewItemV4 subop = option;
>      QPalette pal = qApp->palette();
>      if( selected ) {
>         pal.setColor(QPalette::Highlight,Qt::darkGray);
>         pal.setColor(QPalette::WindowText,Qt::white);
>         pal.setColor(QPalette::HighlightedText,Qt::white);
>         pal.setColor(QPalette::Text,Qt::white);
>         subop.state |= QStyle::State_Selected;
>         subop.palette = pal;
>     }
> 
>     BaseClass::paint(painter,subop,index);    // Note: subop.
> 
> >(previously posted as
> > http://lists.qt-project.org/pipermail/interest/2016-January/020760.html). I
> > currently color the rows with custom colors based on the data being shown
> in
> > each row in my model’s data(const QModelIndex &currIndex, int role)
> when role ==
> > Qt::BackgroundRole.

For future readers, which will probably be me again 6 months from now, all I 
needed was to create a QStyledItemDelegate with paint() reimplemented as 
follows:

void customStyledItemDelegate::paint(QPainter *painter, const 
QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QStyleOptionViewItem subop(option);
    subop.state &= ~(QStyle::State_Selected);
    QStyledItemDelegate::paint(painter, subop, index);
}

Then when an item is selected, it just gets painted the same as the model's 
Background and Foreground roles was already telling it to.
Sean
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to