Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: i_rik_mik от Июнь 30, 2014, 14:43



Название: QTreeView со своим стилем проблема с выделенными элементами
Отправлено: i_rik_mik от Июнь 30, 2014, 14:43
Доброго времени суток
Изменил стандартные узлы в дереве
Код:
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);
   }
}