Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QTScript
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Script. Интеграция WebKit
Noob
Имеется следующий(для примера) код:
Раскрывающийся текст

#ifndef UPLOADER_H
#define UPLOADER_H

#include <QThread>
#include <QtNetwork>
#include <QtScript>

class Uploader : public QThread
{
    Q_OBJECT

public:
    Uploader(QObject* parent = 0);
    ~Uploader();

signals:
    void returnMessage(QString status, QString message);
    
public slots:
    void Stop();

protected:
    void run();
    QScriptValue connect(QScriptContext *context, QScriptEngine *engine);
    
private:
    QTcpSocket socket;
    QScriptEngine engine;
};

#endif

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "uploader.h"

QScriptValue Uploader::connect(QScriptContext *context, QScriptEngine *engine)
{
    QString host = context->argument(0).toString();
    qint32 port = context->argument(1).toInt32();
    qint32 timeout = context->argument(2).toInt32();

    emit returnMessage("info", "function connect(" + host + ", " + QString("%1").arg(port) + ", " + QString("%1").arg(timeout) + ");");

    socket.connectToHost(host, port);

    if (!socket.waitForConnected(timeout * 1000))
    {
        emit returnMessage("error", socket.errorString());
        return false;
    }

    return true;
}

Uploader::Uploader(QObject* parent)
{
    QFile scriptFile("upload.js");
    if (scriptFile.open(QIODevice::ReadOnly))
    {
        QString info = engine.evaluate(scriptFile.readAll(), "upload.js").toString();
    }
    else
    {
        emit returnMessage("error", "Внимание: ошибка открытия файла upload.js");
    }
    scriptFile.close();

    QScriptValue fun1 = engine.newFunction(connect);
    engine.globalObject().setProperty("connect", fun1);
}

Uploader::~Uploader()
{
}

void Uploader::Stop()
{
    return;
}

void Uploader::run()
{
    QScriptValue main = engine.evaluate("main");
    QString info =  main.call(QScriptValue()).toString();

    return;
}



При компиляции кода выводится сообщение "error: no matching function for call to `QScriptEngine::newFunction(<unknown type>)'" (строка "QScriptValue fun1 = engine.newFunction(connect);")
Вопрос: как заставить эту заразу работать?
kwisp
можно предположить что конфликтует с QObject::connect(...)
попробуйте поменять имя этой функции.
Noob
Цитата(kwisp @ 16.7.2009, 12:57) *
можно предположить что конфликтует с QObject::connect(...)
попробуйте поменять имя этой функции.


Ничего не изменилось
kwisp
в примерах используются только статические и внешние функции..
наверное методы нельзя использовать таким образом.
Цитата
error: argument of type `QScriptValue (Uploader:: )(QScriptContext*, QScriptEngine*)' does not match `QScriptValue (*)(QScriptContext*, QScriptEngine*)'
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.