前言:
每个网站都有一个 Logo 图标,它一般显示在网站标题的前面,这个图标文件是可以获取到的。下面介绍了获取图标文件的方法。
QWebEngineView 实现的网页内容是可以进行缩放的,下面介绍了听过 Ctrl++、Ctrl--和 Ctrl+0 实现放大、缩小和重置的功能。
获取网站图标文件:
网站的图标可以使用 QWebEngineView 的 iconUrl() 函数返回该图标的 url,然后使用网络访问接口类来获取图标文件。
因为使用到网络访问,所以要在.h 文件中添加前置类 QNetworkAccessManager,网络访问的详细使用方法可以参考其他的文章。
connect(view, &QWebEngineView::iconUrlChanged, this, &MainWindow::handleIconUrlChanged());
复制代码
获取到图标的 url 后,通过 QNetworkAccessManager 调用 get()函数来获取图标文件。
void MainWindow::handleIconUrlChanged(const QUrl &url)
{
QNetworkRequest iconRequest(url);
QNetworkReply *iconReply = manager->get(iconRequest);
iconReply->setParent(this);
connect(iconReply, &QNetworkReply::finished, this, &MainWindow::handleIconLoaded);
}
void MainWindow::handleIconLoaded()
{
QIcon icon;
QNetworkReply *iconReply = qobject_cast<QNetworkReply *>(sender());
if(iconReply && iconReply->error() == QNetworkReply::NoError)
{
QByteArray data = iconReply->readAll();
QPixmap pixmap;
pixmap.loadFromData(data);
icon.addPixmap(pixmap);
iconReply->deleteLater();
}else{
icon = QIcon(QStringLiteral("../image/defaulticon.png"));
}
setWindowIcon(icon);
}
复制代码
实现网页内容的放大、缩小、重置:
使用 QWebEngineView 的 setZoomFactor(qreal factor) 函数可以实现网页内容的缩放,其中,factor 是缩放因子,它的取值范围是 0.25~5.0,表示最大可以放大到 500%,最小可以缩小到 25%。可以通过 zoomFactor() 函数获取网页内容现在的缩放因子是多少。
QMenu *viewMenu = new QMenu(tr("查看"));
//放大
QAction *zoomIn = viewMenu->addAction(tr("放大"));
zoomIn->setShortcurt(QKeySequence(Qt::CTRL | Qt::Key_Plus));
connect(zoomIn, &QAction::triggered, [this](){
view->setZoomFactor(view->zoomFactor() + 0.1);//放大1%
});
//缩小
QAction *zoomOut = viewMenu->addAction(tr("缩小"));
zoomOut->setShortcurt(QKeySequence(Qt::CTRL | Qt::Key_Minus));
connect(zoomOut, &QAction::triggered, [this](){
view->setZoomFactor(view->zoomFactor() - 0.1);//缩小1%
});
//重置
QAction *resetZoom = viewMenu->addAction(tr("重置"));
resetZoom->setShortcurt(QKeySequence(Qt::CTRL | Qt::Key_0));
connect(resetZoom, &QAction::triggered, [this](){
view->setZoomFactor(1.0);//缩小1%
});
menuBar()->addMenu(viewMenu);
复制代码
评论