2013-08-23 9 views
0

Qt에서 맞춤 슬롯을 만드는 데 문제가 있습니다. 코드 :Qt C++ 맞춤 슬롯

class.h 파일 :

public slots: 
    void resetUrl(){ 
     this->load(QUrl("http://www.google.com")); 
} 

MAIN.CPP 파일 :

#include <QWebView> 
#include <QPushButton> 

QWebView *web = new QWebView(mainwindow); 
QPushButton *button = new QPushButton(mainwindow); 

web->load(QUrl("http://www.yahoo.com")); 
button->setText("Google"); 

QObject::connect(button, SIGNAL(clicked()), web, SLOT(resetUrl())); 

그것은 나에게 말하는 부하가 인식 구성원이 아닌 메시지를 제공합니다. 무엇을 바꾸어야합니까?

편집 : 을 Heres 전체 webview.h 파일 :

#ifndef WEBVIEW_H 
#define WEBVIEW_H 

#include <QMainWindow> 
#include <QWebView> 


namespace Ui { 
class webview; 
} 

class webview : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit webview(QWidget *parent = 0); 
    ~webview(); 

public slots: 
    void resetUrl(){ 
     this->load(QUrl("http://www.google.com")); 
    } 

private: 
    Ui::webview *ui; 
}; 

#endif // WEBVIEW_H 
+1

맞지 않습니다. 슬롯이 정의 된 클래스는 무엇입니까? – Mat

+0

이것이 전부 당신의 코드라면 cpp 파일에 메소드 정의가 빠져 있고 전체 .h 파일에 클래스가 없다면 – mdoran3844

+0

내 전체 코드가 아니기 때문에 나머지는 붙여 넣을 수 있습니다 –

답변

0

당신은 여기 webview 클래스의 load() 메서드를 호출하려고 그러나

void resetUrl(){ 
    this->load(QUrl("http://www.google.com")); 
} 

, 당신의 클래스에서 파생 QMainWindow :

class webview : public QMainWindow 

기본 클래스와 파생 클래스 모두 실제로 load() 메서드가 없습니다. 대신 webview 클래스를 QWebView에서 파생시켜야합니다. 이 경우 기본 클래스 'load() 메서드가 호출되며 정상적으로 작동합니다.

+0

QMainWindow를 그 자리에서 QWebView로 바꿨을 때 몇 가지 새로운 오류가 발생했습니다 : 'QMainWindow'는 'webview'의 직접적인 기반이 아니며 'Ui :: webview :: setupUi (webview * const) –

+0

@COnnorM이라면 적절한 기본 클래스의 생성자를 호출하기 위해 생성자를 변경해야합니다. 또한'ui'를 없애면 필요 없을 것입니다 (그리고'QWebView'가 가지고 있는지조차 확실하지 않습니다). – SingerOfTheFall

+0

굉장, 이제 작동합니다 :) –