QtScript: подключить сигнал к слоту QtScript класса (описанного в самом ECMA-скрипте)

Модератор: Модераторы разделов

Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

QtScript: подключить сигнал к слоту QtScript класса

Сообщение Denjs »

я хочу описать класс на QtScript, создать объект этого класса и подключить к его функции сигнал.

Он собственно подключается, но при вызове обращение происходит к не-инициированному объекту, а не к тому к которому я его подключал.

Значит давайте по порядку. (весь код - это QtScript ECMA скрипт)
описываем класс t_ChatUser:

Код: Выделить всё

function t_ChatUser(_ClientConnection, _Name)
{
    this.clientConnection = _ClientConnection;
    this.clientConnection.readyRead.connect( this.inData);// к себе-же и подключим
    this.name = _Name;
    this.ip = '';
}

 t_ChatUser.prototype.toString = function() { return "[" + this.name + "]"; }

 t_ChatUser.prototype.inData = function()
        {
                var _data= new ByteArray;
            print (""+this.name+" ");
            _data=this.clientConnection.readAll();
            print ("            : ["+_data.toLatin1String()+"]");
        };

где
_ClientConnection - экземпляр класса QTcpSocket (вернее QtScript-оболочка над ним, но это не суть важно)
_Name - строка
print () - определенная мною функция.
ByteArray - класс-оболочка над QByteArray.

создаю экземпляр t_ChatUser так

Код: Выделить всё

User = new t_ChatUser(ClientConnection,"Droddy_");


Значит вы видите строку -

Код: Выделить всё

this.clientConnection.readyRead.connect( this.inData);// к себе-же и подключим
так вот при вызове inData (он вызывается,да) происходит вызов не инициированного объекта, т.е this.name - пустой, this.clientConnection.readAll() - ругается что readAll() не определен.
При ручном-же обращении

Код: Выделить всё

User.inData();
все происходит на ура - имя есть, данные считываются и т.п.

Вопрос : как заставить такой код работать?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали: