Название: grabWidget Отправлено: jurtal от Январь 18, 2011, 12:06 Привет! Нужна помощь...
Делаю QPixmap preview = QPixmap::grabWidget(m_labelCtrl->getControl()); И рисую этот пиксмап... В результате этот виджет отрисовывается на каком-то сером фоне, хотя тот который я граблю может быть на фоне другого цвета... Не пойму, что за серый фон... Название: Re: grabWidget Отправлено: dd от Январь 18, 2011, 12:11 QPixmap preview(m_labelCtrl->getControl()->size());
preview.fill(Qt::transparent); далее render примерно так m_labelCtrl->getControl()->render(&preview); Название: Re: grabWidget Отправлено: jurtal от Январь 18, 2011, 14:58 не, не получается так... он все равно на сером фоне...
Название: Re: grabWidget Отправлено: dd от Январь 18, 2011, 15:02 А что это за виджет то вообще?
Видимо с ним какая-то проблема. Я отрисовываю вышеописанным способом у себя в программе и пролем с фоном нет. ---------------------- А может быть и проблемы нет? Возможно нет понимания просто? Виджет рендерится без фона. То есть прозрачный фон. Потом ты отрисовываешь картинку на сером фоне, его и получаешь. Если нужно грабить как-то по-другому, см. описание ф-ии void QWidget::render ( QPaintDevice * target, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ) ), а именно флагов. Название: Re: grabWidget Отправлено: jurtal от Январь 18, 2011, 15:10 Наследованный от QLabel widget. В paintEvent ему задается цвет фона, рамка итд.... Но если цвета фона нет (прозрачный label), то когда он грабится ему добавляется серый фон, который не нужен.
Название: Re: grabWidget Отправлено: dd от Январь 18, 2011, 15:15 А если для прозрачности сделать заливку цветом Qt::transparent ?
Если сам отрислвываешь виджет, зачем использовать QLabel? Может QWidget сразу? Название: Re: grabWidget Отправлено: jurtal от Январь 18, 2011, 15:18 Заливку чего? Сам label рисуется прозрачным. Но когда я отрисовываю сграбленный битмап, то этот битмап этот содержит серый фон.
Название: Re: grabWidget Отправлено: dd от Январь 18, 2011, 15:37 [изменил код и скрин на более наглядный]
Нашел решение. Создал пустой проект, вот код главного окна: Код: #include "mainwindow.h" Вот результат: (http://habreffect.ru/files/7d2/5a998d8b8/Снимок-Безымянное_окно.png) (http://habreffect.ru/7d2/5a998d8b8/Снимок-Безымянное_окно.png) То есть рисуется сначала QLabel 200 на 100 Потом рисуется пиксмап, начиная с X=50, то есть часть на сером фоне, часть на зеленом. Как видно, никакого фона нет. Вот тестовый проект http://webfiles.ru/21398986 |