Недавно я начал делать некоторые программы для 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 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
, это бесплатный funciton, поэтому вам нужно использовать новый синтаксис, доступный с Qt 5.
Когда вы не находитесь в QObject
вас нет доступа к connect()
, поэтому в моем примере используется пространство имен QObject
чтобы вызвать его в main()
. В вашем случае, когда DNT отметил, что это просто какая-то другая функция, которая называется "connect".
Другая ошибка, которую вы сделали, - это передать представление, но connect()
работает с указателями, поэтому вам нужно использовать оператор &
для получения указателя на представление.