2014-07-16 86 views
1

我正在学习C++,遇到问题。我正在尝试制作一个简单的网络浏览器。这可能是因为我在WebWiew中使用了Class MainWindow。如果我在WebWiew中包含MainWindow,编译器会说MainWindow类不存在。没有匹配函数C++

当我将WebView连接到接口时会出现问题。 我做了我的程序的简短版本。

webview.cpp:6: erreur : no matching function for call to 'WebView::connect(WebView* const, const char*, MainWindow*&, const char*)';

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QtWebKitWidgets> 
#include "webview.h" 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
public:  
    MainWindow(); 

public slots: 
    void adressChanged(QUrl url); 
    void setTabTitle(QString title); 
    void setProgressionValue(int value); 
}; 

#endif // MAINWINDOW_H 

#ifndef WEBVIEW_H 
#define WEBVIEW_H 

#include <QWebView> 

class MainWindow; 

class WebView : public QWebView 
{ 
public: 
    WebView(MainWindow *interface, QWidget *parent = 0); 

private: 
    MainWindow *interface; 

}; 

#endif // WEBVIEW_H 

#include "webview.h" 

WebView::WebView(MainWindow *interface, QWidget *parent) : QWebView(parent), interface(interface) 
{ 
    QObject::connect(this, SIGNAL(titleChanged(QString)), this->interface, SLOT(setTabTitle(QString))); 
    QObject::connect(this, SIGNAL(urlChanged(QUrl)), this->interface, SLOT(adressChanged(QUrl))); 
    QObject::connect(this, SIGNAL(loadProgress(int)), this->interface, SLOT(setProgressionValue(int))); 
} 
+0

您是否尝试在webview.c中添加'#include“mainwindow.h”' – gfrigon

回答

0

当你调用QObject::connect()方法类MainWindow必须是完全合格的。在你的情况下,你只是向前声明它,所以编译器不知道,那MainWindow继承自QMainWindow。只需将#include "mainwindow.h"添加到webview.cpp中