Custom Script Class Parameterübergabe
-
Hallo allerseits,
Ich möchte mir einige Klasse entwickeln, welche mithilfe der QScriptEngine verarbeitet und ausgeführt werden sollen.
Angefangen habe ich mit einer einfachen String-Klasse. Das funktioniert soweit auch schon ganz gut.Der folgende JavaScript-Code funktioniert:
@var string1 = new QdbString();
var string2 = new QdbString();
var msgBox = new QdbMessageBox();string1.assign("Hallo Welt!");
string2.assign(string1.getString());msgBox.setTitle(string1.getString());
msgBox.setText(string2.getString());msgBox.exec();@
Bei diesem hier gibt isError() vom Rückgabetyp "QScriptValue" bei evaluate false zurück:
@var string1 = new QdbString();
var string2 = new QdbString();
var msgBox = new QdbMessageBox();string1.assign("Hallo Welt!");
string2.assign(string1);msgBox.setTitle(string1.getString());
msgBox.setText(string2.getString());msgBox.exec();@
Einziger Unterschied der beiden Skripte ist, dass bei string2.assign direkt string1 angegeben ist.
Die assign-Methode ist in meinen Klassen folgendermaßen überladen:QdbString.h
@public Q_SLOTS:
void assign(const char* _String);
void assign(const QString &_String);
void assign(const QdbString &_String);@QdbString.cpp
@void QdbString::assign(const char* _String)
{
this->m_String = _String;
}void QdbString::assign(const QString &_String)
{
this->m_String = _String;
}void QdbString::assign(const QdbString &_String)
{
this->m_String = _String.m_String;
}@QdbStringScriptPrototype.h
@public Q_SLOTS:
void assign(const char* _String);
void assign(const QString& _String);
void assign(const QdbString& _String);@QdbStringScriptPrototype.cpp
@void QdbStringScriptPrototype::assign(const char* _String) {
this->nativeObject()->assign(_String);
}void QdbStringScriptPrototype::assign(const QString& _String)
{
this->nativeObject()->assign(_String);
}void QdbStringScriptPrototype::assign(const QdbString& _String)
{
this->nativeObject()->assign(_String);
}@Also das Problem ist nun konkret, dass die assign(const QString& _String) akzeptiert wird und die assign(const QdbString& _String) Methode nicht.
Warum ist das so? Ich habe meine Quelltexte anhand des CustomClass-Beispiels von Qt erstellt. Ich kann den kompletten Source der Dateien leider nicht angeben, da die Posts auf 6000 Zeichen begrenzt sind.Muss man in der QdbStringScriptPrototype-Klasse oder der QdbStringScriptClass noch etwas deklarieren damit die Übergabe des Typs QdbString akzeptiert wird?
Gruß
Manuel