最近开始为 Windows 编写一些程序,但我根本无法让我的程序运行。我正在尝试实现一个主要可以在前端使用 HTML 并使用 Javascript 控制后端的环境。在 Linux 上,我设法向“JavaScriptCore”添加了功能和东西,但 Windows 对我并不友善。
目前我正在 try catch URL 更改事件,允许特殊 URL 执行命令,但是我收到以下错误:
error: C2664: 'connect' : cannot convert parameter 1 from 'QWebView *' to 'SOCKET'
There is no context in which this conversion is possible
我没有找到关于“QWebView to 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();
}
最佳答案
试试这个:
QObject::connect(&view, &QWebView::urlChanged, test);
您正在使用仅适用于 QObject
和槽的旧连接语法,test
不是槽,它不是 QObject 的函数
派生类,它是一个免费函数,因此您必须使用自 Qt 5 以来可用的新语法。
当您不在 QObject
中时,您无权访问 connect()
,这就是我的示例使用 QObject
的原因命名空间在 main()
中调用它。正如 DNT 指出的那样,在您的情况下,它只是恰好被命名为“connect”的其他一些功能。
您犯的另一个错误是您传递了 View ,但是 connect()
使用指针,因此您必须使用 &
运算符来获取指向 View 的指针.
关于c++ - QtWebKit C++ 连接 : cannot convert QWebView to SOCKET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822338/