QtWebKit c ++ connect: невозможно конвертировать QWebView в SOCKET

0

Недавно я начал делать некоторые программы для 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();
}
  • 0
    Ваш void test () не похож на метод слота в производном классе QObject. Qt не будет создавать метаданные соединения для этого. Кроме того, подписи функций сигналов и слотов должны совпадать.
  • 2
    @DNT - Я думаю, что параметры избыточного сигнала просто отбрасываются при подключении к функции, которая принимает меньше параметров.
Показать ещё 3 комментария
Теги:
qt
sockets
qtwebkit

1 ответ

2
Лучший ответ

Попробуйте это вместо этого:

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

Вы используете старый синтаксис соединения, который работает только с QObject и слотами, test не является слотом, и он не является функцией производного класса QObject, это бесплатный funciton, поэтому вам нужно использовать новый синтаксис, доступный с Qt 5.

Когда вы не находитесь в QObject вас нет доступа к connect(), поэтому в моем примере используется пространство имен QObject чтобы вызвать его в main(). В вашем случае, когда DNT отметил, что это просто какая-то другая функция, которая называется "connect".

Другая ошибка, которую вы сделали, - это передать представление, но connect() работает с указателями, поэтому вам нужно использовать оператор & для получения указателя на представление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню