質問

I'm having trouble with making custom slots in Qt. Code:

class.h file:

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

main.cpp file:

#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()));

It gives me a message saying load is not a recognized member. What do I need to change?

Edit: Heres the full webview.h file:

#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
役に立ちましたか?

解決

You are trying to call a load() method of your webview class here:

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

However, your class is derived from QMainWindow:

class webview : public QMainWindow

Both the base class, and your derived class indeed do not have any load() method. You should derive your webview class from QWebView instead of QMainWindow. In this case, the base class' load() method will be called, and it will work fine.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top