Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alp от Сентябрь 15, 2009, 22:36



Название: QLabel и внутренние границы
Отправлено: Alp от Сентябрь 15, 2009, 22:36
Закончил работу начатую в теме про QRect для слова на QLabel (http://www.prog.org.ru/topic_10597_0.html), осталась одна проблема: на прикладываемом рисунке текст в QLabel рисуется не с самого края (выравнивание стоит по левому краю), а откуда-то берется промежуток в 4-5 пикселов. ПРи этом indent/margin/contentMargin для самого QLabel  возвращают 0, соответствующие методы для QFrame так же возвращают 0 или 1(для ширины рамки).
Что это за паддинг и где его можно взять?


Название: Re: QLabel и внутренние границы
Отправлено: UVV от Сентябрь 16, 2009, 11:42
Я так понял, что это класс, унаследованный от QLabel, так?
А текст как рисуется?


Название: Re: QLabel и внутренние границы
Отправлено: Alp от Сентябрь 16, 2009, 12:35
Текст рисуется вызовом QLabel::paintEvent(event);

Т.е. я в своем обработчике рисовалки только прямоугольники дорисовываю, остальное - забота самого QLabel.


Название: Re: QLabel и внутренние границы
Отправлено: UVV от Сентябрь 16, 2009, 12:36
А, значит тебе правильное смещение текста надо посчитать?


Название: Re: QLabel и внутренние границы
Отправлено: Alp от Сентябрь 16, 2009, 13:54
Именно. Дело даже не столько в том, что бы "посчитать", сколько в том, что бы понять почему и на какое расстояние он смещается. Если все внутренние отстуупы нулевые, ширина рамки нулевая то почему же текст пишется не с самого края виджета?


Название: Re: QLabel и внутренние границы
Отправлено: UVV от Сентябрь 16, 2009, 16:27
Я могу предположить, что дело в стиле. У меня была такая же ситуация с текстом в tableView.
Мне помогло чтение исходников qitemdelegate.cpp. Попробуй по аналогии поизучать qlabel.cpp, чтобы узнать, как оно вырисовывается.