Root interactive in Qt

I have a DAQ application which makes some TH1D in Qt.
The filling and writing to file works.

I want to be able to monitor=plot=draw() the histograms during data acquisition.

I tried TRint but did not make it work yet.
I also tried just starting a QProcess to start a session with root, but I cannot make this work either.

Anyone have a working example of these or something else?
milles thanks. :smiley:

nobody working on Interactive Root in Qt?


You need to let ROOT handle events. To do so, create a timer calling gSystem->ProcessEvents();
Here is an example (using a QWidget, but you can adapt it to your needs)

QMainCanvas::QMainCanvas(QWidget *parent) : QWidget(parent)
   // QMainCanvas constructor.

   QVBoxLayout *l = new QVBoxLayout(this);
   l->addWidget(canvas = new QRootCanvas(this));
   l->addWidget(b = new QPushButton("&Draw Histogram", this));
   connect(b, SIGNAL(clicked()), this, SLOT(clicked1()));
   fRootTimer = new QTimer( this );
   QObject::connect( fRootTimer, SIGNAL(timeout()), this, SLOT(handle_root_events()) );
   fRootTimer->start( 20 );

void QMainCanvas::handle_root_events()
   //call the inner loop of ROOT

This code is taken from the simple_canvas.tar.gz example of [url= post[/url]
See also How to Embed a TCanvas in External Applications?

Cheers, Bertrand.

Hi Bertrand,

  1. I will try it and get back to you
  2. sorry for “double posting” but one question was a bit more general and the other a bit more specific. Either way, I will keep it in mind next time.

thanks for the response!