Доброго времени суток! есть токая вот функция
C++ (Qt)
void scriptengine::loadModule(const QString &moduleName){
QWidget *dialog;
QUiLoader loader;
QFile file(m_configpath+"/"+moduleName+".ui");
if (!file.open(QFile::ReadOnly)){
return;
}
dialog = loader.load(&file);
file.close();
file.setFileName(m_configpath+"/"+moduleName+".js");
if (!file.open(QFile::ReadOnly)){
return;
}
QTextStream filets(&file);
QScriptValue scv = m_se.newQObject(dialog);
m_se.globalObject().setProperty("ui",scv);
scv = m_se.newQObject(&m_dbe);
m_se.globalObject().setProperty("db",scv);
m_se.evaluate(filets.readAll());
file.close();
//m_se.evaluate("run()");// работает
QScriptValue fun = m_se.evaluate("(run())");
QScriptValueList args;
args << 1 << 2;
QScriptValue threeAgain = fun.call(QScriptValue(), args);//работает
fun = m_se.evaluate("(runab(a, b))");
QScriptValue threeAgain = fun.call(QScriptValue(), args);//не работает
}
и скрпипт:
Javascript
function run(){
ui.pushButton.clicked.connect(on_pushButton_clicked);
ui.show();
}
function runab(a, b){
ui.show();
return a+b;
}
function on_pushButton_clicked(){
db.createConnection();
db.executeQuery("CREATE TABLE testtest22 char, ccddd bit) WITH ( OIDS = FALSE);");
}
Почему run() работает, а runab(a, b) нет?
PS щас выяснил что запуск run() происходит еще на этопе
QScriptValue fun = m_se.evaluate("(run())");
тогда как пользоваться функциями???