我正在使用Windows 8上的Qt 5.1进行简单的网络重做。
例如,如果我导航到Google,登录然后搜索“hello world”,我想稍后保存信息并重做(即重做提交表单和登录)。
我试过的是这个。
。创建新的Qt GUI应用程序;
。添加课程:
Name: MyWebView , Base class: QWebView
Inherits QWidget
header: mywebview.h
src: mywebview.cpp
。添加课程:
Name: MyWebPage, Base class: QWebPage
Inherits QObject
header: mywebpage.h
src: mywebpage.cpp
。修改MyWebPage.h:
add
public:
bool QWebPage::acceptNavigationRequest(QWebFrame * frame, const QNetworkRequest & request, NavigationType type);
。修改MyWebPage.cpp:
add
#include <QMessageBox>
add
bool MyWebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type)
{
QMessageBox::about(0,"it works","it works");
}
。修改MyWebView.h:
add
#include "mywebpage.h"
add
public:
MyWebPage *mwp;
MyWebPage * page(){ return mwp;}
。将以下代码添加到untitled1.pro:
QT += webkitwidgets
。将main.cpp更改为:
#include "mainwindow.h"
#include <QApplication>
#include "mywebview.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
MyWebView wv;
wv.show();
return a.exec();
}
。建立并运行。
我希望每次点击按钮(表单或链接)时,“{work}”消息都会显示QMessageBox::about
,但它从未发生过。
如何正确重新实现acceptNavigationRequest
?
答案 0 :(得分:0)
我将mywebview.cpp改为
#include "mywebview.h"
#include "mywebpage.h"
MyWebView::MyWebView(QWidget *parent) :
QWebView(parent), mwp(new MyWebPage(this))
{
setPage(mwp);
}
并且工作正常