crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> grabWidget скрытого виджета, некорректно грабится
mezmay
  опции профиля:
сообщение 28.2.2011, 12:17
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Есть виджет (QWebView) , в него загружена картинка. Делаю этому виджету hide() (он в лейауте, если это важно), а потом QPixmap::grabWidget(). В результате pixmap содержит только половину положенного изображения - вторая половина серая. Почему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
mezmay
  опции профиля:
сообщение 1.3.2011, 14:18
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Написал простой тестовый пример:

Раскрывающийся текст
файл cwin.h
#ifndef CWIN_H
#define CWIN_H

#include <QtGui/QMainWindow>
#include "ui_cwin.h"
#include "cmyweb.h"

class cwin : public QMainWindow
{
    Q_OBJECT

public:
    cwin(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~cwin();

private:
    Ui::cwinClass ui;
    CMyWeb  *web;

private slots:
    void on_pushButtonHide_clicked();
    void on_pushButtonSave_clicked();
};

#endif // CWIN_H


файл cwin.cpp
#include "cwin.h"
#include <QVBoxLayout>
#include <QPixmap>

cwin::cwin(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);

    QVBoxLayout *vLayout = new QVBoxLayout();
    web = new CMyWeb(ui.widget);
    vLayout->addWidget(web);
    setLayout(vLayout);
}

cwin::~cwin()
{

}

void cwin::on_pushButtonSave_clicked()
{
    QPixmap pixmap = QPixmap::grabWidget(web, web->rect());
    pixmap.save("1.jpg", "JPG", 100);
}

void cwin::on_pushButtonHide_clicked()
{
    web->hide();
}


файл cmyweb.h
#ifndef CMYWEB_H
#define CMYWEB_H

#include <QWebView>

class CMyWeb : public QWebView
{
    Q_OBJECT

public:
    CMyWeb(QWidget *parent);
    ~CMyWeb();

private:

};

#endif // CMYWEB_H


файл cmyweb.cpp
#include "cmyweb.h"

CMyWeb::CMyWeb(QWidget *parent)
    : QWebView(parent)
{
    load(QUrl("http://www.mail.ru"));
}

CMyWeb::~CMyWeb()
{

}


В этот раз сохранение с hide()'ом и без hide()'a дало одинаковый результат, причем непонятный.
Смотрите два приложенных файла, первый - то что реально отображается, второй - то что грабится. Грабится почему-то больше)...

Здесь почему-то получилось безо всяких смещений, но сохраняемое изображение все равно не соответствует отображаемому
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.2.2025, 13:17