class MyText { RQ_OBJECT("MyText") private: int rpx,rpy; TText *t; public: MyText() {rpx=0; rpy=0;} ~MyText() {} void ExecuteText(Int_t event, Int_t px, Int_t py, TObject *sel); }; void MyText::ExecuteText(Int_t event, Int_t px, Int_t py, TObject *sel) { TCanvas * c = (TCanvas *) gTQSender; TPad * pad = (TPad *) c->GetSelectedPad(); if ( event == kButton1Down) { cout << "exiting now"<Disconnect(); delete this; } else if ( event == kMouseMotion ) { if (!t) { t = new TText(pad->AbsPixeltoX(px),pad->AbsPixeltoY(py),"test"); t->SetTextSize(0.05); t->Draw(); } else { t->SetText(pad->AbsPixeltoX(px),pad->AbsPixeltoY(py),"test"); } pad->Update(); } } void text() { // Create a new canvas. c1 = new TCanvas("c1","Dynamic Slice Example",10,10,700,500); c1->SetFillColor(42); c1->SetFrameFillColor(33); //create a 2-d histogram, fill and draw it TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4); hpxpy->SetStats(0); Double_t px,py; for (Int_t i = 0; i < 50000; i++) { gRandom->Rannor(px,py); hpxpy->Fill(px,py); } hpxpy->Draw("colz"); MyText * te = new MyText(); c1->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)", "MyText", te,"ExecuteText(Int_t,Int_t,Int_t,TObject*)"); }