Как захватить изображение, отображаемое с помощью QWebEnginePage :: view? - PullRequest
0 голосов
/ 21 апреля 2020

Спасибо за просмотр: Когда в диалоге есть скрыть, QPixmap пусто empty почему ??? и этот путь слишком неэффективен ... помогите мне

1 Ответ

0 голосов
/ 21 апреля 2020

、、、

#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;
}

、、、

...