Название: QTreeView/Widget and CSS Отправлено: carhun от Июль 12, 2012, 21:41 Добрый день.
Хотел бы, что бы в QTreeView/Widget'e в первом столбике рисовался поверха текста кружочек, соотв. для этого я так понимаю мне нужно использовать CSS. Делаю так: Код: QTreeView::item { Соотв. этот CSS рисует для всех колонок, как можно сделать, что бы оно рисовало кружек только для одной колонки? Прилагаю ui файл для дизайнера для теста ... Спасибо за внимание. Название: Re: QTreeView/Widget and CSS Отправлено: andrew.k от Июль 12, 2012, 23:47 QItemDelegate или QStyleItemDelegate
Название: Re: QTreeView/Widget and CSS Отправлено: carhun от Июль 13, 2012, 09:49 Добрый день!
А сам допустим кружочек я так понимаю могу сделать только используя CSS или есть еще какой-то способ? Делагат, я так понял мне нужн только для того, что бы сделать, что бы этот кружок рисовался в первом столбике? Название: Re: QTreeView/Widget and CSS Отправлено: Пантер от Июль 13, 2012, 09:51 В делегате ты можешь рисовать все, что тебе хочется.
Название: Re: QTreeView/Widget and CSS Отправлено: carhun от Июль 13, 2012, 10:44 Т.е. рисовать вот эти дуги, к-ые я прилагаю в файлике, это все можно сделать в делигате? или тут надо что-то вида:
Код: QTreeView::branch:has-siblings:!adjoins-item { Просто я пытаюсь в делигате делать вот так: Код: void Delegate::drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect, const QPixmap &pixmap) const Название: Re: QTreeView/Widget and CSS Отправлено: andrew.k от Июль 13, 2012, 13:44 Делегат - это механизм рисования ячейки (в твоем случае).
Когда вьюхе необходимо отрисовать ячейку (любую), она обращается к делегату. А уже твой делегат может решать как рисовать ту или иную ячейку, т.к. у него есть ее индекс. Ты можешь вообще все ячейки рисовать по-разному. Название: Re: QTreeView/Widget and CSS Отправлено: carhun от Июль 13, 2012, 15:31 Смотрите, значит сделал пока, что так:
Код: void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const и тогда как видно на рисунке, получается что вот для первой строки, когда я раскрываю он полностью до конца не дорисовывает прямоугольник... Для того, что он дорисовал надо ему самому сказать, что option.rect.setBottomLeft(QPoint(x1,y1)) ? Если да, то тогда получается мне надо узнать если ли у моей первой строки child'ы - это я так понимаю можно сделать исходя из индекса, но как тогда исходя из индекса узнать сколько места он занимает? Ведь получается мне надо взять, у первой строки пройтись по child'м, и когда дошел до последнего взять его координаты конца и соотв. уставноить y1 = y посл. child'a? Тогда он нарисует все правильно, как я до этого рисовал на картинке... Значит скажу почему мне сразу надо знать высоту прямоугольника, в к-ом находится строка... Это мне нужно потому, что у меня во 2м столбце может находится что-то большее, чем текущий размер, что в следствие дает, что я не могу допустим взять первую строчку, посчитать просто к-во ее детей и это к-во умножить на высоту прямоугольника, в к-ой помещается моя первая строка, тем самым высчитав мне нужный Y... Соотв. как мне поступить? |