假设我们有一个准系统QWebView:
#include <QApplication>
#include <QWebView>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWebView view;
view.show();
view.setUrl(QUrl("http://google.com"));
return app.exec();
}
从页面开始加载到完成时,如何显示图形叠加层,最好是全屏透明和最小动画(如计时器/沙滩球等)?当网址从QWebView内部更改时也应触发。
最佳答案
您可以使用this answer中提供的LoadingOverlay
类在任何QWidget
上绘制覆盖图。在您的情况下,在触发信号QWebView
时显示loadStarted
顶部的覆盖图,并在触发信号loadFinished
时隐藏它。
以下代码将帮助您入门。我将linked answer中的代码放入overlay.h
中,QWebView
的子类(用于处理覆盖的显示/隐藏)在webview.h
中:
webview.h
#include "overlay.h"
#include <QWebView>
class WebView : public QWebView
{
Q_OBJECT
public:
WebView(QWidget * parent) : QWebView(parent)
{
overlay = new LoadingOverlay(parent);
connect(this,SIGNAL(loadFinished(bool)),this,SLOT(hideOverlay()));
connect(this,SIGNAL(loadStarted()),this,SLOT(showOverlay()));
}
~WebView()
{
}
public slots:
void showOverlay()
{
overlay->show();
}
void hideOverlay()
{
overlay->hide();
}
private:
LoadingOverlay* overlay;
};
main.cpp
#include <QApplication>
#include "overlay.h"
#include "webview.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ContainerWidget base;
Webview w(&base);
base.show();
w.load(QUrl("http://google.com"));
return a.exec();
}
关于c++ - 将页面加载到QWebView时覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30014431/