#include <QMainWindow>
#include <QWidget>
#include <QTimer>
#include "tool/shape.h"
#include "tool/sensor.h"
#include "tool/sensor_set.h"
#include "tool/track_unit.h"
#include "tool/track.h"
#include "tool/track_set.h"
#include "tool/opera.h"
class QWebView;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected Q_SLOTS:
void test();
//void startOpera();
public:
Q_SIGNALS:
void updateObject(const QString& data);
private:
//Ui::MainWindow *ui;
QWebView* m_webView;
tools::Opera2D* opera;
tools::Opera2D::Iterator *iter;
tools::Opera2D::OperaState* opera_state;
QTimer* m_timerOpera;
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
//ui(new Ui::MainWindow)*/
{
m_webView = new QWebView(this);
QUrl url = QUrl("file:///F:/WORKSTATON/SVN/txm/txm/google/index.html");
m_webView->load(url);
setCentralWidget(m_webView);
move(QPoint(200, 200));
QObject::connect(this, SIGNAL(updateObject(const QString&)),
m_webView->page()->mainFrame(), SLOT(evaluateJavaScript(const QString&)));
}
F:\WORKSTATON\SVN\tools_temp\mainwindow.cpp:162: error: no matching function for call to 'MainWindow::connect(MainWindow* const, const char*, QWebFrame*, const char*)'
m_webView->page()->mainFrame(), SLOT(evaluateJavaScript(const QString&)));
D:\Program\Qt\Qt5.3.1\5.3\mingw482_32\include\QtCore\qobject.h:215: error: no type named 'Object' in 'struct QtPrivate::FunctionPointer<const char*>'
答案 0 :(得分:1)
如果您勾选以下复选框:
原因是您忘记包含返回的堆对象的头文件,即:
#include <QWebFrame>
供将来参考:鉴于您使用Qt 5.3.1,如果您在其他受支持的平台上也可以使用Qt 5,或者至少有条件地使用Qt 5,您可以尝试使用此表单:
connect(this, &MainWindow::updateObject,
m_webView->page()->mainFrame(), &QWebFrame::evaluateJavaScript);
话虽如此,您的代码还有其他小问题,但它们只是相关的:
您的方案中的信号在标题中标记为public
时没有多大意义。
接收者是this
对象是不寻常的;换句话说,您可以重新考虑您的设计,为什么不直接在您的代码库的其他位置直接调用插槽或从此接收器连接。