最近开始为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();
}
答案 0 :(得分:2)
请改为尝试:
QObject::connect(&view, &QWebView::urlChanged, test);
您使用的旧连接语法仅适用于QObject
和插槽,test
不是插槽,并且它不是QObject
派生类的函数,它是一个免费的函数,所以你必须使用自Qt 5以来可用的新语法。
如果您不在QObject
内,则无法访问connect()
,这就是我的示例使用QObject
命名空间在main()
中调用它的原因。在你的情况下,DNT注意到它只是其他一些恰好命名为“connect”的函数。
您犯的另一个错误是您传递了视图,但connect()
使用指针,因此您必须使用&
运算符来获取指向视图的指针。