2013-06-18 5 views
0

J'utilise QtScript dans mon application. Les scripts sont écrits par les utilisateurs. Comme exemple de script comme ceci:Comment déconnecter tous les connectés dans 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(); 

Je veux de C++ arrêter ce script avant que le temps de test passé et écrire la fonction comme celui-ci

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 
} 

Comment déconnecter correctement?

Répondre

0

Vous pouvez déconnecter des signaux individuels et emplacements:

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

source: http://www.developer.nokia.com/Community/Wiki/Understanding_Signals_and_Slot_in_Qt

Pour obtenir des récepteurs, utilisez QObject :: récepteurs():

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

Il vous semble Vous ne pouvez pas obtenir de slots (vous devez garder une trace des connexions par vous-même):

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

Cependant, il y a ...

... façons de signaux de débogage et emplacements:

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

+0

Et si je ne sais pas les récepteurs et les machines à sous? –

Questions connexes