root-framework - 独立的 ROOT 应用程序不会在关闭 Canvas 时终止

标签 root-framework

我正在制作一个独立的 ROOT 应用程序,该应用程序应在关闭 Canvas 时终止。以下是我的实验代码。

#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;
}

代码编译时没有任何警告。当我运行它时, Canvas 会打开。但是当我关闭 Canvas 时,应用程序不会终止,终端也不会提示。有什么建议吗?

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

最佳答案

感谢 root-forum 的 @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;
}

关于root-framework - 独立的 ROOT 应用程序不会在关闭 Canvas 时终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63254060/

相关文章:

python - 将 C++ 类指针的向量发送到 python

c++ - 如何在不更改轴的编号和标题位置的情况下使刻度线指向图中的负方向

c++ - 如何使用堆栈跟踪来确定崩溃原因?

c++ - CERN ROOT 的对象所有权和 C++11 智能指针

HDF5 与 ROOT 框架的集成

c++ - 根目录 : TTreeReader and TVector3

c++ - Cern ROOT - 如何将 TTree 根文件中的内容读入数组

c++ - 从 CERN ROOT 中的文本文件绘制 6 个图表

c++ - T树对象;使用绘图选项来绘制差异直方图

python - 在通过 Python 使用 Root 中创建带有分支的 TTree