2

我正在编写一个带有 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 的第一次体验(不是学校作业),所以任何提示都将不胜感激。

4

1 回答 1

3

问题在于这行代码:

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

SIGNAL 宏接受函数签名,而不是函数调用。它应该如下所示:

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

每当 WebView 的 url 更改时,都会发出此信号,并将其更改为的 url 传递给您。

于 2012-09-05T21:51:39.133 回答