首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获由QWebEnginePage::view呈现的图像?

如何捕获由QWebEnginePage::view呈现的图像?
EN

Stack Overflow用户
提问于 2020-04-21 11:14:11
回答 1查看 132关注 0票数 0

谢谢你看:当对话框隐藏时,QPixmap是空的,为什么?这条路太inefficient...help我

EN

回答 1

Stack Overflow用户

发布于 2020-04-21 11:14:11

、、、

代码语言:javascript
复制
#include "webKitDialog.h"
#include "ui_webKitDialog.h"
#include <QWebEngineView>
#include <QWebEnginePage>
#include "HiWebEnginePage.h"
#include <QTimer>
#include <QThread>
#include <QScreen>
#include <QGuiApplication>
#include <QPixmap>

webKitDialog::webKitDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::webKitDialog)
{
    ui->setupUi(this);

    m_view = new QWebEngineView(this);
    m_page = new HiWebEnginePage(m_view);
    m_view->setPage(m_page);

    ui->lineEdit->setText("http://www.youku.com");


    ui->verticalLayout->addWidget(m_view, 1);

    on_lineEdit_editingFinished();

    QTimer *time = new QTimer;
    connect(time, &QTimer::timeout, this, &webKitDialog::onTimeOut);
// 
    time->start(1000);
}

webKitDialog::~webKitDialog()
{
    delete ui;
}

void webKitDialog::showEvent(QShowEvent *event)
{
    m_view->reload();
    m_view->show();
    QDialog::showEvent(event);
}

void webKitDialog::onTimeOut()
{
   emit onImageUpdate(createThumbnail(m_view->size()));
}

void webKitDialog::on_pushButton_close_clicked()
{
    this->hide();
    m_view->showNormal();
}

void webKitDialog::on_pushButton_max_clicked()
{
    qreal factor = m_view->zoomFactor();
    factor += 0.25;
    if(factor > 5)
    {
        factor = 5;
    }
    m_page->setZoomFactor(factor);
}

void webKitDialog::on_pushButton_refresh_clicked()
{
    m_view->reload();
}

void webKitDialog::on_lineEdit_editingFinished()
{
    QString strUrl = ui->lineEdit->text();
    m_page->load(QUrl(strUrl));
}

void webKitDialog::on_pushButton_zoonout_clicked()
{
    qreal factor = m_view->zoomFactor();
    factor -= 0.25;
    if(factor < 0.25)
    {
        factor = 0.25;
    }
    m_page->setZoomFactor(factor);
}

QPixmap webKitDialog::createThumbnail(const QSize &size)
{
    QPixmap pixMap(size);

    qDebug() << "size" << size << endl;

    QRegion rg(0, 0, size.width(), size.height());

    QPainter painter(&pixMap);

    m_view->page()->view()->render(&painter, QPoint(), rg);

    painter.end();

    return pixMap;
}

、、、

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61342218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档