【问题标题】:Standalone ROOT application doesn’t terminate upon closing a canvas关闭画布后独立的 ROOT 应用程序不会终止
【发布时间】:2020-11-24 23:21:54
【问题描述】:

我正在制作一个独立的 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++

【问题讨论】:

    标签: root-framework


    【解决方案1】:

    感谢来自根论坛的@bellenot 提供以下解决方案。显然,对于 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 2014-11-20
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      相关资源
      最近更新 更多