Доброго времени суток
Изменил стандартные узлы в дереве
QString styleSheet =
"QTreeView{background-color: rgb(" + QString::number(color.red()) + ","
+ QString::number(color.green()) +","
+ QString::number(color.blue()) + ")}\r\n"
"QTreeView::branch:has-children:!has-siblings:closed, QTreeView::branch:closed:has-children:has-siblings { border-image: none; image: url(" + QDir::homePath() + "/.mf_rik_mik/icons/icon_plus.png"+");}\r\n"
"QTreeView::branch:open:has-children:!has-siblings, QTreeView::branch:open:has-children:has-siblings { border-image: none; image: url("+ QDir::homePath() + "/.mf_rik_mik/icons/icon_minus.png" +");}";
// TreeBookMarks->setStyleSheet(styleSheet);
Теперь когда выделяю элемент с узлом (выделение иконки узла сверху и снизу на 1-2 пикселя больше) чем выделение остальной части строки. Со стандартными узлами такого нет. Установка sizeHint у делегата ни чего не дает.
И еще один вопрос. в делегате я рисую квадрат на нужном мне месте, когда строка не выделена то все нормально, когда выделена мой рисунок исчезает. Как сделать чтоб при выделении строки мой рисунок остался
void BookMarksDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (index.column() == 1 )
{
painter->save();
painter->setPen(mColor);
QRect rect = opt.rect;
painter->drawRect(rect2);
painter->restore();
QStyledItemDelegate::paint(painter, opt, index);
}
}