> > 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