我正在编写一个带有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(不是学校作业),所以任何提示都会受到赞赏。
答案 0 :(得分:3)
问题在于这行代码:
connect(view,SIGNAL(urlChanged(url)),this,SLOT(GetToken()));
SIGNAL宏接受函数签名,而不是函数调用。它应该是这样的:
connect(view,SIGNAL(urlChanged(QUrl)),this,SLOT(GetToken()));
只要WebView的url发生更改,此信号就会发出,并传递给它更改为的URL。