差分
このページの2つのバージョン間の差分を表示します。
| |
softwares:root:tgclasses [2018/02/25 15:23] – 作成 kobayash | softwares:root:tgclasses [2018/04/15 16:23] (現在) – kobayash |
---|
AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 2, 2)); | AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 2, 2)); |
</code> のように書く。TGLabel を new するとき、 this ではなく hframe とするので注意。 | </code> のように書く。TGLabel を new するとき、 this ではなく hframe とするので注意。 |
| |
| ==== TGFileBrowser ==== |
| * void TGFileBrowser::DoubleClicked(TGListTreeItem *item, Int_t /*btn*/) {} の注意点 |
| * TGFileBrowser の TF2 などのヒストグラム (名前を h4 とする) の TGListTreeItem をダブルクリックしたとき、以下のエラーが出る時がある。<code> |
| Error: Symbol h4 is not defined in current scope (tmpfile):1: |
| Error: Failed to evaluate h4->Draw("colz") |
| *** Interpreter error recovered *** |
| </code> これは、TGFileBrowser::DoubleClicked の問題と言えるかもしれないが、.root.mimes を <code> |
| [root/th2] |
| pattern = TH2[CSFDI] |
| icon = h2_s.xpm h2_t.xpm |
| action = ->Draw("colz") |
| </code> と編集し、さらに現在いるディレクトリからヒストグラム h4 が見えない (すなわち、h4 が違う TFile や TDirectoryFile にいて、現在のディレクトリで gApplication->ProcessLine(act.Data()) (ただし、act.Data() = "h4->Draw(\"colz\");") を実行しても h4 を参照できない) ときに生じるエラーである。(TH2 の action を .root.mimes から gClient->GetMimeTypeList()->GetAction(obj->IsA()->GetName(), action) という関数で取得し、"->Draw()" という文字列が action 内に含まれるかを act.Contains("->Draw()") という関数で判別している。) 解決方法としては、.root.mimes を編集することを諦め、<code> |
| [root/th2] |
| pattern = TH2[CSFDI] |
| icon = h2_s.xpm h2_t.xpm |
| action = ->Draw() |
| </code> というようにデフォルトに戻すか、TGListTreeItem をクリックした際に発生する DoubleClick のシグナルをフックし、current directory (gDirectory) を変更し h4 を見えるようにする。必要であれば、TGFileBrowser.cxx を書き換えても良い。もしこれがただのバグであれば、ROOT 開発チームに要望を出す。 |
| |