Russian Qt Forum
Сентябрь 28, 2024, 14:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Запуск сриптовой функции из файла с параметрами  (Прочитано 2528 раз)
iRQSX
Гость
« : Июнь 08, 2011, 08:41 »

Доброго времени суток! есть токая вот функция
Код
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())");
тогда как пользоваться функциями???
« Последнее редактирование: Июнь 08, 2011, 09:14 от iRQSX » Записан
asvil
Гость
« Ответ #1 : Июнь 08, 2011, 11:42 »

Если Ви хотите получить доступ к функции определенной в скрипте, поступить можно так:
Код:
QScriptValue fun = m_se.globalObject().value("runab");
fun.call();
Записан
iRQSX
Гость
« Ответ #2 : Июнь 08, 2011, 12:25 »

Если Ви хотите получить доступ к функции определенной в скрипте, поступить можно так:
Код:
QScriptValue fun = m_se.globalObject().value("runab");
fun.call();
точнее:
Код
C++ (Qt)
QScriptValue fun = m_se.globalObject().property("runab");
   QScriptValueList args;
   args << 1 << 7;
   qDebug()<<fun.call(QScriptValue(), args).toInteger();
то есть не  m_se.globalObject().value, а m_se.globalObject().property
благодарю за совет
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.17 секунд. Запросов: 20.