QtWebKit c ++ connect:无法将QWebView转换为SOCKET

时间:2014-11-08 21:33:14

标签: c++ windows qt sockets qtwebkit

最近开始为Windows做一些编程,我根本无法让我的程序运行。我试图实现一个环境,我主要可以使用HTML作为前端,并使用Javascript控制后端。在Linux上,我设法将功能和内容添加到" JavaScriptCore"但是Windows并没有和我好心。

目前我正在尝试捕获URL更改事件,允许使用特殊URL执行命令,但是我收到以下错误:

error: C2664: 'connect' : cannot convert parameter 1 from 'QWebView *' to 'SOCKET'
There is no context in which this conversion is possible

我没有设法找到一个关于" QWebView到SOCKET"的搜索结果。所以我不知道该怎么办,只是问你们。

这是我的代码。我不太喜欢编程,请温柔;)

#include <QtGui>
#include <QtWebKit>
#include <QApplication>
#include <QWebView>
#include <iostream>

using namespace std;

void test()
{
    cout << "Hello world";
}

int main(int argc, char** argv) {
    QApplication app(argc, argv);
    QWebView view;
    view.setWindowFlags(Qt::CustomizeWindowHint);
    view.setWindowFlags(Qt::FramelessWindowHint);
    view.setFixedSize(1000,600);
    view.setStyleSheet("background:transparent;");
    view.setAttribute(Qt::WA_TranslucentBackground);
    view.setUrl(QUrl("http://google.com"));
    view.setWindowTitle("test v0.1");
    connect(view, SIGNAL(urlChanged(QUrl)), SLOT(test()));
    view.show();

    return app.exec();
}

1 个答案:

答案 0 :(得分:2)

请改为尝试:

QObject::connect(&view, &QWebView::urlChanged, test);

您使用的旧连接语法仅适用于QObject和插槽,test不是插槽,并且它不是QObject派生类的函数,它是一个免费的函数,所以你必须使用自Qt 5以来可用的新语法。

如果您不在QObject内,则无法访问connect(),这就是我的示例使用QObject命名空间在main()中调用它的原因。在你的情况下,DNT注意到它只是其他一些恰好命名为“connect”的函数。

您犯的另一个错误是您传递了视图,但connect()使用指针,因此您必须使用&运算符来获取指向视图的指针。