文書の過去の版を表示しています。
TG classes
リンク
TGLayoutHints
- TGLayoutHints(ULong_t hints, Int_t padleft, Int_t padright, Int_t padtop, Int_t padbottom) の padleft, padright, padtop, padbottom は左右上下の padding を px 単位で与える。hints には、配置したい場所を指定する。TGLayoutManager.h で定義される
enum ELayoutHints { kLHintsNoHints = 0, kLHintsLeft = BIT(0), kLHintsCenterX = BIT(1), kLHintsRight = BIT(2), kLHintsTop = BIT(3), kLHintsCenterY = BIT(4), kLHintsBottom = BIT(5), kLHintsExpandX = BIT(6), kLHintsExpandY = BIT(7), kLHintsNormal = (kLHintsLeft | kLHintsTop) // bits 8-11 used by ETableLayoutHints };
から指定する。kLHintsLeft | kLHintsTop | kLHintsExpandY というように、or ビット演算子 | を用いて複数指定できる。BIT は
Widget の配置
- widget を縦から配置していく分には、MyMainFrame::MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h) : TGMainFrame(p, w, h) クラス内で
fLbl1 = new TGLabel(this, "Label1"); AddFrame(fLbl1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4)); fLbl2 = new TGLabel(this, "Label2"); AddFrame(fLbl2, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4));
のように書いていけば良い。横に widget を横に並べるには、
TGHorizontalFrame *hframe = new TGHorizontalFrame(this, 300, 20, kFixedWidth); fLbl1 = new TGLabel(hframe, "Label1"); hframe->AddFrame(fLbl1, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4)); fLbl2 = new TGLabel(hframe, "Label2"); hframe->AddFrame(fLbl2, new TGLayoutHints(kLHintsExpandX, 5, 5, 3, 4)); AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 2, 2));
のように書く。TGLabel を new するとき、 this ではなく hframe とするので注意。