webpopupwindow.cpp

来源:互联网 发布:江西在线网安全知让 编辑:程序博客网 时间:2024/06/05 05:15
#include "urllineedit.h"#include "webpage.h"#include "webpopupwindow.h"#include "webview.h"#include <QIcon>#include <QVBoxLayout>WebPopupWindow::WebPopupWindow(QWebEngineProfile *profile)    : m_addressBar(new UrlLineEdit(this))    , m_view(new WebView(this)){    setAttribute(Qt::WA_DeleteOnClose);    setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);    QVBoxLayout *layout = new QVBoxLayout;    layout->setMargin(0);    setLayout(layout);    layout->addWidget(m_addressBar);    layout->addWidget(m_view);    m_view->setPage(new WebPage(profile, m_view));    m_view->setFocus();    m_addressBar->setReadOnly(true);    m_addressBar->setFavIcon(QIcon(QStringLiteral(":defaulticon.png")));    connect(m_view, &WebView::titleChanged, this, &QWidget::setWindowTitle);    connect(m_view, &WebView::urlChanged, this, &WebPopupWindow::setUrl);    connect(m_view, &WebView::iconChanged, this, &WebPopupWindow::handleIconChanged);    connect(m_view->page(), &WebPage::geometryChangeRequested, this, &WebPopupWindow::handleGeometryChangeRequested);    connect(m_view->page(), &WebPage::windowCloseRequested, this, &QWidget::close);}QWebEngineView *WebPopupWindow::view() const{    return m_view;}void WebPopupWindow::setUrl(const QUrl &url){    m_addressBar->setUrl(url);}void WebPopupWindow::handleGeometryChangeRequested(const QRect &newGeometry){    m_view->setMinimumSize(newGeometry.width(), newGeometry.height());    move(newGeometry.topLeft() - m_view->pos());    // let the layout do the magic    resize(0, 0);    show();}void WebPopupWindow::handleIconChanged(const QIcon &icon){    m_addressBar->setFavIcon(icon);}
0 0