Как отключить все подключенное в QtScript

Я использую QtScript в своем приложении. Скрипты написаны пользователями.
Как пример сценария, как это:

//<init test time counters>

function testIteration() {
if (<test time is out>) {
myCppObject.mySignalAllDone.disconnect(testIteration);//disconnection
return;
}
//<Adding actions to myCppObject>
}
myCppObject.mySignalAllDone.connect(testIteration);//connection
testIteration();

Я хочу из C ++ остановить этот скрипт до истечения времени тестирования и написать такую ​​функцию

void MainWindow::toolButtonStopScript_clicked(){
disconnect(&this->myCppObject);// Disconnecting everything connected to myCppObject.
this->scriptEngineThread.abortAllEvaluations();
myCppObject.stopAllActivity();// emits mySignalAllDone, that is not disconnected (why and how to do that if I don't know what connections user made?), calling testIteration(), appending activity to myCppObject and this ends only when test time passed. How to solve this?
this->guiLog.log(GUILog::log_info, tr("Execution of script is interrupted by user"), this->logLevelMsgs);
this->connectMyCppObject();//make default connections
}

Как правильно отключить?

0

Решение

Вы можете отключить отдельные сигналы и слоты:

disconnect(sender0, SIGNAL(overflow()),receiver1, SLOT(handleMathError()));

источник: http://www.developer.nokia.com/Community/Wiki/Understanding_Signals_and_Slot_in_Qt

Чтобы получить получателей, используйте QObject :: receivers ():

http://qt-project.org/doc/qt-4.8/qobject.html#receivers

Кажется, вы не можете получить слоты (вы должны следить за соединениями самостоятельно):

http://qt-project.org/forums/viewthread/6820

Тем не менее, есть …

…Способы отладки сигналов и слотов:

http://samdutton.wordpress.com/2008/10/03/debugging-signals-and-slots-in-qt/

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]