Название: Как обрезать виджет? Отправлено: sq_vasya от Август 11, 2010, 12:16 Всем привет.
Есть виджет верхнего уровня (Родитель), который содержит в себе Чайлд (если конкретно, это QLabel). Мне нужно, чтобы Чайлд показывался не полностью, а только его нижняя половина. При этом сам Чайлд должен находится в центре Родителя. Это очень упрощённый вариант реальной задчи. Пробовал в этой связи юзать нечто вроде Код: void Widget::paintEvent(QPaintEvent* aEvent) но необходимый результат получен не был, Чайлд как рисовался полностью, так и рисуется. Пробовал юзать QLabel::setGeometry() но таким образом можно обрезать только низ и справа. А мне нужно обрезать конкретно верх. Подскажите пожалуйста, как решить эту задачу. WBR Название: Re: Как обрезать виджет? Отправлено: Marat(Qt) от Август 11, 2010, 14:04 Можно перекрыть виджет другим виджетом(label с autoFillBackground например), но тут будут нюансы с лайотами, нюансы разрешимы, но разрешать их вам придется самостоятельно.
Название: Re: Как обрезать виджет? Отправлено: Igors от Август 11, 2010, 14:18 Не проверял но первое что приходит в голову: вставить "обрезаемый" виджет в другой, который меньше его. И менять координаты обрезаемого внутри его parent'а
Название: Re: Как обрезать виджет? Отправлено: whirlwind от Август 11, 2010, 14:26 создать собственный layout, который будет выравнивать виджет так, как вам надо
Название: Re: Как обрезать виджет? Отправлено: sq_vasya от Август 11, 2010, 14:48 Можно перекрыть виджет другим виджетом(label с autoFillBackground например), но тут будут нюансы с лайотами, нюансы разрешимы, но разрешать их вам придется самостоятельно. Спасибо за ответ. Да, это можно использовать в конкретном и это будет работать корректно. В моём живом приложении реализовать это будет намного сложнее, т.к. там используется очень много виджетов и лэйаутов. Порядок отрисовки не всегда один и тот же и завист от входных данных. Я пробовал так делать (забыл указать в посте, т.к. счёл этот метод очень работоёмким и отложил его на случай, если вообще по другому никак не получиться). Не проверял но первое что приходит в голову: вставить "обрезаемый" виджет в другой, который меньше его. И менять координаты обрезаемого внутри его parent'а Просто, как всё гениальное. Это действительно работает. Проверил на тестовом приложении. Попробую вставить в рабочий проект, думаю, должно работать. Всем спасибо огромное за помощь и советы. |