Resize WebView widget once the loginpage rendered

When the login dialogue displays the login page itself
the WebView widget did not resize according to
the dimensions of the login page.

Signed-off-by: Axel Lender <lender@b1-systems.de>
This commit is contained in:
Axel Lender 2022-11-10 13:13:32 +01:00
parent 22d9a743af
commit 664e0c18ec
2 changed files with 24 additions and 0 deletions

View file

@ -111,12 +111,30 @@ WebView::WebView(QWidget *parent)
connect(_webview, &QWebEngineView::loadProgress, _ui.progressBar, &QProgressBar::setValue);
connect(_schemeHandler, &WebViewPageUrlSchemeHandler::urlCatched, this, &WebView::urlCatched);
connect(_page, &QWebEnginePage::contentsSizeChanged, this, &WebView::slotResizeToContents);
}
void WebView::setUrl(const QUrl &url) {
_page->setUrl(url);
}
QSize WebView::minimumSizeHint() const {
return _size;
}
void WebView::slotResizeToContents(const QSizeF &size){
//this widget also holds the progressbar
const int newHeight = size.toSize().height() + _ui.progressBar->height();
const int newWidth = size.toSize().width();
_size = QSize(newWidth, newHeight);
this->updateGeometry();
//only resize once
disconnect(_page, &QWebEnginePage::contentsSizeChanged, this, &WebView::slotResizeToContents);
}
WebView::~WebView() {
/*
* The Qt implmentation deletes children in the order they are added to the

View file

@ -23,13 +23,19 @@ public:
WebView(QWidget *parent = nullptr);
~WebView() override;
void setUrl(const QUrl &url);
virtual QSize minimumSizeHint() const override;
signals:
void urlCatched(const QString user, const QString pass, const QString host);
private slots:
void slotResizeToContents(const QSizeF &size);
private:
Ui_WebView _ui;
QSize _size;
QWebEngineView *_webview;
QWebEngineProfile *_profile;
WebEnginePage *_page;