无法使urlChanged信号正常工作

时间:2012-09-05 21:03:27

标签: qt qtwebkit

我正在编写一个带有QWebView类的应用程序,我想在使用urlChanged(const QUrl&)信号将其重定向到另一个url地址时捕获,但是在运行时我得到了这个

  

Object :: connect:没有这样的信号QWebView :: urlChanged(url)

这是我的代码

   #include <QString>
   #include "test.h"
   #include <QUrl>
   #include <QWebView>
   #include <stdio.h>
   QFapp::QFapp(QWidget* parent):QWidget(parent)
   {
      QWebView*view = new QWebView;
      QUrl url("http://google.com");
      view->load(url);
      view->show();
      connect(view,SIGNAL(urlChanged(url)),this,SLOT(GetToken()));
   }
  void QFapp::GetToken()
  {
     printf("Signal is emited");
  }

这是头文件

   #include <QWidget>
   #include <QString>
   #include <QUrl>
   #include <QWebView>
   class QFapp: public QWidget
   {
      Q_OBJECT
    public:
        QFapp(QWidget* parent = 0);
    public slots:
      void GetToken();
    private:
      QWebView* view;
        QUrl url;
     };

并且没有编译时警告。

我不明白我做错了什么。这是我第一次使用Qt(不是学校作业),所以任何提示都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

问题在于这行代码:

 connect(view,SIGNAL(urlChanged(url)),this,SLOT(GetToken()));

SIGNAL宏接受函数签名,而不是函数调用。它应该是这样的:

connect(view,SIGNAL(urlChanged(QUrl)),this,SLOT(GetToken()));

只要WebView的url发生更改,此信号就会发出,并传递给它更改为的URL。