У меня проблемы с созданием пользовательских слотов в Qt. Код:
файл 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()));
Это дает мне сообщение о том, что load не является распознанным участником. Что мне нужно изменить?
Редактировать:
Вот полный файл 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
Вы пытаетесь позвонить load()
метод вашего webview
класс здесь:
void resetUrl(){
this->load(QUrl("http://www.google.com"));
}
Тем не менее, ваш класс является производным от QMainWindow
:
class webview : public QMainWindow
И базовый класс, и ваш производный класс действительно не имеют load()
метод. Вы должны получить свой webview
класс от QWebView
вместо QMainWindow
, В этом случае базовый класс load()
метод будет вызван, и он будет работать нормально.
Других решений пока нет …