Название: QHeaderView, sortindicator Отправлено: leonike от Май 18, 2011, 10:09 Привет всем. Столкнулся со следующей проблемой.
Нужно, чтобы индикатор сортировки в QHeaderView отображался в секции не справа, а слева. Не могу понять, как сделать Пробовал с помощью qss (margin, position), не работает. Название: Re: QHeaderView, sortindicator Отправлено: GreatSnake от Май 18, 2011, 11:57 Через css скорее всего не получится.
Нужно перегрузить Код
Название: Re: QHeaderView, sortindicator Отправлено: leonike от Май 18, 2011, 12:44 наследую от QCommonStyle, переопределяю subElementRect:
Код
Ставлю стиль для хидера: Код
Однако, проблема следующая, индикатор отображается слева, но при увеличение ширины секции отступ слева увеличивается Не могу понять, с каким параметрами нужно передавать QRect Название: Re: QHeaderView, sortindicator Отправлено: GreatSnake от Май 18, 2011, 12:53 Цитировать Однако, проблема следующая, индикатор отображается слева, но при увеличение ширина секции отступ слева увеличивается Недочитал описание QRect::setLeft(). Используй QRect::moveLeft().А где перегрузка SE_HeaderLabel? И лучше наследоваться от QProxyStyle. Название: Re: QHeaderView, sortindicator Отправлено: leonike от Май 18, 2011, 13:06 Цитировать Однако, проблема следующая, индикатор отображается слева, но при увеличение ширина секции отступ слева увеличивается Недочитал описание QRect::setLeft(). Используй QRect::moveLeft().А где перегрузка SE_HeaderLabel? И лучше наследоваться от QProxyStyle. а для чего SE_HeaderLabel? сделал так: Код
все работает. отступ 5 пикселей от левого края в секции. вот только теперь нужно сделать еще отступ для текста, чтобы на него не накладывался индикатор Название: Re: QHeaderView, sortindicator Отправлено: GreatSnake от Май 18, 2011, 13:18 Цитировать вот только теперь нужно сделать еще отступ для текста, чтобы на него не накладывался индикатор Тебе же несколько раз сказалиЦитировать А где перегрузка SE_HeaderLabel? Название: Re: QHeaderView, sortindicator Отправлено: leonike от Май 18, 2011, 13:29 Цитировать вот только теперь нужно сделать еще отступ для текста, чтобы на него не накладывался индикатор Тебе же несколько раз сказалиЦитировать А где перегрузка SE_HeaderLabel? если сделать так: Код то при каждом вызове subElementRect c передачей SE_HeaderLabel, в консоль должно выводиться 123 но не выводится и насколько я понял, то к отступу текста это ни имеет никакого значения если я что-то не так делаю, то поясните Название: Re: QHeaderView, sortindicator Отправлено: GreatSnake от Май 18, 2011, 13:36 Цитировать SE_HeaderLabel не передается в метод subElementRect У всех передаётся, а у тебя нет. Копай...Цитировать и насколько я понял, то к отступу текста это ни имеет никакого значения Для определения места отрисовки текста используется именно SE_HeaderLabel.Название: Re: QHeaderView, sortindicator Отправлено: zenden от Май 18, 2011, 13:38 Цитировать SE_HeaderLabel не передается в метод subElementRect У всех передаётся, а у тебя нет. Копай...Если наследоваться от стиля, то передается, а если наследоваться от QProxyStyle, то не передается. В коде стандартных стилей почти нигде не используется proxy()->subElementRect(), везде используется просто subElementRect. Только я вот не знаю это баг или так задумано. Название: Re: QHeaderView, sortindicator Отправлено: leonike от Май 18, 2011, 19:43 Цитировать SE_HeaderLabel не передается в метод subElementRect У всех передаётся, а у тебя нет. Копай...Цитировать SE_HeaderLabel не передается в метод subElementRect У всех передаётся, а у тебя нет. Копай...Только я вот не знаю это баг или так задумано. Название: Re: QHeaderView, sortindicator Отправлено: GreatSnake от Май 18, 2011, 20:02 Цитировать голословное, ничем не подкрепленное утверждение Подтверждённое исследованием исходников Qt.zenden прав, почему то при использовании QProxyStyle происходит такое. Имхо, чистой воды баг. Надо будет ещё поисследовать это и отписать троллям, если подтвердится. В общем получается, что зря я тебе посоветовал наследоваться от QProxyStyle. Наследуйся от QCommonStyle, хотя без использования QProxyStyle может не отрабатывать qcc. |