I use QScript in my app in such manner:
I created object to pass it to script:
class ScriptMediator
:public QObject{
Q_OBJECT
public:
explicit ScriptMediator
(QWidget *parent
= 0);
{
list.append(child);
}
private:
QList<QWidget *> list;
public slots:
void okClicked();
void cancelClicked();
};
class ScriptMediator :public QObject
{
Q_OBJECT
public:
explicit ScriptMediator(QWidget *parent = 0);
void AddWidget(QWidget * child)
{
list.append(child);
}
private:
QList<QWidget *> list;
public slots:
void okClicked();
void cancelClicked();
void print(QString string);
QWidget * GetWidget(QString name);
};
To copy to clipboard, switch view to plain text mode
In short, I want to pass all controls from specified form to script.
after dialog creation I initialize script and pass this object to script:
p_mediator.AddWidget(ui->okButton); // QPushButton
p_mediator.AddWidget(ui->cancelButton); // QPushButton
p_mediator.AddWidget(ui->edit); // QLineEdit
QScriptValue objectValue = p_engine.newQObject(&p_mediator);
p_engine.globalObject().setProperty("Mediator", objectValue);
QScriptValue result = p_engine.evaluate(contents, fileName);
p_mediator.AddWidget(ui->okButton); // QPushButton
p_mediator.AddWidget(ui->cancelButton); // QPushButton
p_mediator.AddWidget(ui->edit); // QLineEdit
QScriptValue objectValue = p_engine.newQObject(&p_mediator);
p_engine.globalObject().setProperty("Mediator", objectValue);
QScriptValue result = p_engine.evaluate(contents, fileName);
To copy to clipboard, switch view to plain text mode
Script code:
function okClicked()
{
Mediator.okClicked();
}
function cancelClicked()
{
Mediator.cancelClicked();
}
function returnPressed()
{
Mediator.print( this.text );
}
Mediator.GetWidget("okButton").clicked.connect(okClicked);
Mediator.GetWidget("cancelButton").clicked.connect(cancelClicked);
Mediator.GetWidget("code").returnPressed.connect(returnPressed);
function okClicked()
{
Mediator.okClicked();
}
function cancelClicked()
{
Mediator.cancelClicked();
}
function returnPressed()
{
Mediator.print( this.text );
}
Mediator.GetWidget("okButton").clicked.connect(okClicked);
Mediator.GetWidget("cancelButton").clicked.connect(cancelClicked);
Mediator.GetWidget("code").returnPressed.connect(returnPressed);
To copy to clipboard, switch view to plain text mode
okButton and cancelButton slots work good but from returnPressed() I get only empty string.
if i rewrite it to Mediator.print( this.text() ); (calling to text() function, not to property) I get error "this.text is not a function".
So how can I use QLineEdit inside a script to get a text from it?
Bookmarks