Автономное приложение ROOT не завершает работу при закрытии холста - PullRequest
1 голос
/ 04 августа 2020

Я делаю автономное приложение ROOT, которое должно завершаться после закрытия холста. Ниже приведен мой экспериментальный код.

#include "TROOT.h"
#include "TApplication.h"
#include "TCanvas.h"

int main(){
TApplication *myapp=new TApplication("myapp",0,0);
TCanvas *c1 =new TCanvas("c1","Canvas Test",800,800);
c1->Connect("TCanvas", "Closed()", "TApplication",gApplication, "Terminate()");
myapp->Run();
return 0;
}

Код компилируется без каких-либо предупреждений. Холст открывается, когда я запускаю его. Но когда я закрываю холст, приложение не закрывается, а терминал не запрашивает. Есть предложения?

_ROOT Version: 6.20
_Platform: Ubuntu 20.04
_Compiler: g++

1 Ответ

1 голос
/ 05 августа 2020

Спасибо @bellenot с root -форума за предоставление следующего решения. Очевидно, для ROOT 6 и выше это должно быть сделано с помощью объекта TRootCanvas.

#include "TROOT.h"
#include "TApplication.h"
#include "TCanvas.h"
#include "TRootCanvas.h"

int main()
{
   TApplication *myapp = new TApplication("myapp", 0, 0);
   TCanvas *c1 = new TCanvas("c1","Canvas Test",800,800);
   TRootCanvas *rc = (TRootCanvas *)c1->GetCanvasImp();
   rc->Connect("CloseWindow()", "TApplication", gApplication, "Terminate()");
   myapp->Run();
   return 0;
}
...