1

我正在 Windows 8 上使用 Qt 5.1 制作简单的网络重做器。

例如,如果我导航到谷歌,登录然后搜索“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();
}

. 构建并运行。

我希望每次单击按钮(表单或链接)时,都会显示“它有效”消息QMessageBox::about,但它从未发生过。

我怎样才能acceptNavigationRequest正确地重新实现?

4

1 回答 1

0

我将 mywebview.cpp 更改为

#include "mywebview.h"
#include "mywebpage.h"
MyWebView::MyWebView(QWidget *parent) :
    QWebView(parent), mwp(new MyWebPage(this))
{
    setPage(mwp);
}

它工作正常

于 2013-07-13T09:54:22.033 回答