# TGTextEntry* ```cpp // A TGTextEntry is a one line text input widget. // // Changing text in the text entry widget will generate the event: // kC_TEXTENTRY, kTE_TEXTCHANGED, widget id, 0. // Hitting the enter key will generate: // kC_TEXTENTRY, kTE_ENTER, widget id, 0. // Hitting the tab key will generate: // kC_TEXTENTRY, kTE_TAB, widget id, 0. ``` TGTextEntry 继承 TGFrame, TGWidget ## class ```cpp enum EEchoMode { kNormal, kNoEcho, kPassword }; enum EInsertMode { kInsert, kReplace }; static FontStruct_t GetDefaultFontStruct();/// Return default font structure in use. static const TGGC &GetDefaultGC();/// Return default graphics context. TGTextEntry(const TGWindow *p, TGTextBuffer *text, Int_t id = -1, GContext_t norm = GetDefaultGC()(), FontStruct_t font = GetDefaultFontStruct(), UInt_t option = kSunkenFrame | kDoubleBorder, Pixel_t back = GetWhitePixel()); /// Create a text entry widget. It will adopt the TGTextBuffer object /// (i.e. the text buffer will be deleted by the text entry widget). TGTextEntry(const TGWindow *parent = 0, const char *text = 0, Int_t id = -1);/// Simple text entry constructor. TGTextEntry(const TString &contents, const TGWindow *parent, Int_t id = -1); /// Simple test entry constructor. Notice TString argument comes before the /// parent argument (to make this ctor different from the first one taking a /// const char*). virtual ~TGTextEntry(); virtual TGDimension GetDefaultSize() const;/// Return the default / minimal size of the widget. virtual void SetDefaultSize(UInt_t w, UInt_t h); /// Set the default / minimal size of the widget. virtual void AppendText(const char *text); /// Appends text to the end of text entry, clears the selection /// and moves the cursor to the end of the line. /// If necessary the text is truncated to fit MaxLength(). /// See also GetText(), InsertText(), SetText(), RemoveText(). void Backspace(); /// Deletes the character on the left side of the text cursor and moves the /// cursor one position to the left. If a text has been marked by the user /// (e.g. by clicking and dragging) the cursor will be put at the beginning /// of the marked text and the marked text will be removed. /// See also Del(). void Clear(Option_t *option="");/// Clears up the text entry. void CursorLeft(Bool_t mark = kFALSE , Int_t steps = 1); /// Moves the cursor leftwards one or more characters. /// See also CursorRight(). void CursorRight(Bool_t mark = kFALSE , Int_t steps = 1); /// Moves the cursor rightwards one or more characters. /// See also CursorLeft(). void CursorWordForward(Bool_t mark = kFALSE); /// Moves the cursor one word to the right. If mark is kTRUE, the text /// is marked. See also CursorWordBackward(). void CursorWordBackward(Bool_t mark = kFALSE); /// Moves the cursor one word to the left. If mark is kTRUE, the text /// is marked. See also CursorWordForward(). void Cut(); /// Copies the marked text to the clipboard and deletes it, if there is any. /// See also CopyText() Paste(). void Del(); /// Deletes the character on the right side of the text cursor. If a text /// has been marked by the user (e.g. by clicking and dragging) the cursor /// will be put at the beginning of the marked text and the marked text will /// be removed. /// See also Backspace(). void Deselect(); /// Deselects all text (i.e. removes marking) and leaves the cursor at the current position. virtual void DrawBorder();/// Draw the border of the text entry widget. void End(Bool_t mark = kFALSE); /// Moves the text cursor to the right end of the line. If mark is kTRUE text /// will be marked towards the last position, if not any marked text will /// be unmarked if the cursor is moved. /// See also Home(). ETextJustification GetAlignment() const { return fAlignment; }//获得文本的对齐方式 TGTextBuffer *GetBuffer() const { return fText; } Int_t GetCursorPosition() const { return fCursorIX; } TString GetDisplayText() const; /// Returns the text that's currently displayed. This is normally /// the same as GetText(), but can be e.g. /// "*****" if EEchoMode is kPassword or /// "" if it is kNoEcho. EEchoMode GetEchoMode() const { return fEchoMode; } EInsertMode GetInsertMode() const { return fInsertMode; } TString GetMarkedText() const; /// Returns the text marked by the user (e.g. by clicking and /// dragging), or zero if no text is marked. See also HasMarkedText(). Int_t GetMaxLength() const { return fMaxLen; } const char *GetText() const { return fText->GetString(); } virtual TGToolTip *GetToolTip() const { return fTip; } virtual const char *GetTitle() const { return GetText(); } Bool_t HasMarkedText() const { return fSelectionOn && (fStartIX != fEndIX); } Pixel_t GetTextColor() const { return fNormGC.GetForeground(); } FontStruct_t GetFontStruct() const { return fFontStruct; } void Home(Bool_t mark = kFALSE); /// Moves the text cursor to the left end of the line. If mark is kTRUE text /// will be marked towards the first position, if not any marked text will /// be unmarked if the cursor is moved. /// See also End(). virtual void Insert(const char *); /// Removes any currently selected text, inserts newText, /// sets it as the new contents of the text entry. virtual void InsertText(const char *text, Int_t pos); /// Inserts text at position pos, clears the selection and moves /// the cursor to the end of the line. /// If necessary the text is truncated to fit MaxLength(). /// See also GetText(), SetText(), AppendText(), RemoveText(). Bool_t IsFrameDrawn() const { return fFrameDrawn; } Bool_t IsEdited() const { return fEdited; } virtual void Layout() { UpdateOffset(); } void MarkWord(Int_t pos); /// Marks the word nearest to cursor position. See also HandleDoubleClick(). Int_t MaxMark() const { return fStartIX > fEndIX ? fStartIX : fEndIX; } Int_t MinMark() const { return fStartIX < fEndIX ? fStartIX : fEndIX; } void NewMark(Int_t pos); /// New character mark at position pos. See also SetCursorPosition(). void Remove(); /// Deletes all characters on the right side of the cursor. /// See also Del() Backspace(). virtual void RemoveText(Int_t start, Int_t end); /// Removes text at the range, clears the selection and moves /// the cursor to the end of the line. /// See also GetText(), InsertText(), SetText(), AppendText(). virtual void SetFont(TGFont *font, Bool_t local = kTRUE); /// Changes text font specified by pointer to TGFont object. If local is kTRUE font is changed locally. virtual void SetFont(FontStruct_t font, Bool_t local = kTRUE); /// Changes text font. If local is kTRUE font is changed locally. virtual void SetFont(const char *fontName, Bool_t local = kTRUE); /// Changes text font specified by name. If local is kTRUE font is changed locally. virtual void SetTextColor(Pixel_t color, Bool_t local = kTRUE); /// Changes text color. If local is true color is changed locally. virtual void SetTextColor(TColor *color, Bool_t local = kTRUE); /// Changes text color. If local is true color is changed locally. virtual void SetText(const char *text, Bool_t emit = kTRUE); //*MENU* /// Sets text entry to text, clears the selection and moves /// the cursor to the end of the line. /// If necessary the text is truncated to fit MaxLength(). /// See also GetText(). virtual void SetToolTipText(const char *text, Long_t delayms = 500); //*MENU* 设置鼠标放上去将会出现的提醒文字 /// Set tool tip text associated with this text entry. The delay is in /// milliseconds (minimum 250). To remove tool tip call method with text = 0. virtual void SetMaxLength(Int_t maxlen); //*MENU* /// Set the maximum length of the text in the editor. If the text is /// currently too long, it is chopped off at the limit. Any marked text will /// be unmarked. The cursor position is set to 0 and the first part of the /// string is shown. /// See also GetMaxLength(). virtual void SelectAll(); /// Selects all text (i.e. marks it) and moves the cursor to the /// end. Useful when a default value has been inserted. If the user /// types before clicking on the widget the selected text will be /// erased. virtual void SetAlignment(ETextJustification mode = kTextLeft); //*SUBMENU* // 设置文本对齐方式 /// Sets the alignment of the text entry. /// Possible values are kTextLeft(default), kTextRight, kTextCenterX. /// See also GetAlignment(). virtual void SetInsertMode(EInsertMode mode = kInsert); //*SUBMENU* /// Sets the mode how characters are entered to the text entry. virtual void SetEchoMode(EEchoMode mode = kNormal); //*SUBMENU* /// The echo modes available are: /// kNormal - display characters as they are entered. This is the default. /// kNoEcho - do not display anything. /// kPassword - display asterisks instead of the characters actually entered. /// It is always possible to cut and paste any marked text; only the widget's own /// display is affected. /// See also GetEchoMode(), GetDisplayText(). void SetEnabled(Bool_t flag = kTRUE) { SetState( flag ); } //*TOGGLE* *GETTER=IsEnabled virtual void SetCursorPosition(Int_t pos); /// Set the cursor position to newPos. See also NewMark(). void SetEdited(Bool_t flag = kTRUE) { fEdited = flag; } virtual void SetFocus();/// Set focus to this text entry. virtual void SetFrameDrawn(Bool_t flag = kTRUE); /// Sets the text entry to draw itself inside a two-pixel frame if /// enable is kTRUE, and to draw itself without any frame if enable is /// kFALSE. The default is kTRUE. virtual void SetState(Bool_t state);/// Set state of widget. If kTRUE=enabled, kFALSE=disabled. virtual void SetTitle(const char *label) { SetText(label); } virtual void SetForegroundColor(Pixel_t fore) { SetTextColor(fore, kFALSE); } Pixel_t GetForeground() const { return fNormGC.GetForeground(); } Bool_t HasOwnFont() const { return fHasOwnFont; } virtual void SavePrimitive(std::ostream &out, Option_t *option = ""); /// Save a text entry widget as a C++ statement(s) on output stream out. virtual Bool_t HandleButton(Event_t *event);/// Handle mouse button event in text entry widget. virtual Bool_t HandleDoubleClick(Event_t *event);/// Handle mouse double click event in the text entry widget. virtual Bool_t HandleCrossing(Event_t *event);/// Handle mouse crossing event. virtual Bool_t HandleMotion(Event_t *event);/// Handle mouse motion event in the text entry widget. virtual Bool_t HandleKey(Event_t *event); /// The key press event handler converts a key press to some line editor /// action. Here are the default key bindings: /// Left Arrow /// Move the cursor one character leftwards. /// Scroll the text when cursor is out of frame. /// Right Arrow /// Move the cursor one character rightwards /// Scroll the text when cursor is out of frame. /// Backspace /// Deletes the character on the left side of the text cursor and moves the /// cursor one position to the left. If a text has been marked by the user /// (e.g. by clicking and dragging) the cursor will be put at the beginning /// of the marked text and the marked text will be removed. /// Home /// Moves the text cursor to the left end of the line. If mark is TRUE text /// will be marked towards the first position, if not any marked text will /// be unmarked if the cursor is moved. /// End /// Moves the text cursor to the right end of the line. If mark is TRUE text /// will be marked towards the last position, if not any marked text will /// be unmarked if the cursor is moved. /// Delete /// Deletes the character on the right side of the text cursor. If a text /// has been marked by the user (e.g. by clicking and dragging) the cursor /// will be put at the beginning of the marked text and the marked text will /// be removed. /// Insert /// Switches character insert mode. /// Shift - Left Arrow /// Mark text one character leftwards /// Shift - Right Arrow /// Mark text one character rightwards /// Control - Left Arrow /// Move the cursor one word leftwards /// Control - Right Arrow /// Move the cursor one word rightwards. /// Control - Shift - Left Arrow /// Mark text one word leftwards /// Control - Shift - Right Arrow /// Mark text one word rightwards /// Control-A /// Move the cursor to the beginning of the line /// Control-B /// Move the cursor one character leftwards /// Control-C /// Copy the marked text to the clipboard. /// Control-D /// Delete the character to the right of the cursor /// Control-E /// Move the cursor to the end of the line /// Control-F /// Move the cursor one character rightwards /// Control-H /// Delete the character to the left of the cursor /// Control-K /// Delete marked text if any or delete all /// characters to the right of the cursor /// Control-U /// Delete all characters on the line /// Control-V /// Paste the clipboard text into line edit. /// Control-X /// Cut the marked text, copy to clipboard. /// Control-Y /// Paste the clipboard text into line edit. /// All other keys with valid ASCII codes insert themselves into the line. virtual Bool_t HandleFocusChange(Event_t *event);/// Handle focus change event in text entry widget. virtual Bool_t HandleSelection(Event_t *event);/// Handle text selection event. virtual Bool_t HandleSelectionClear(Event_t *event);/// Handle selection clear event. virtual Bool_t HandleSelectionRequest(Event_t *event); /// Handle request to send current clipboard contents to requestor window. virtual Bool_t HandleTimer(TTimer *t);/// Handle cursor blink timer. virtual Bool_t HandleConfigureNotify(Event_t *event);/// Handles resize events for this widget. virtual void TextChanged(const char *text = 0); //*SIGNAL* /// This signal is emitted every time the text has changed. virtual void ReturnPressed(); //*SIGNAL* /// This signal is emitted when the return or enter key is pressed. virtual void TabPressed(); //*SIGNAL* /// This signal is emitted when the key is pressed. virtual void ShiftTabPressed(); //*SIGNAL* /// This signal is emitted when and keys are pressed. virtual void CursorOutLeft(); //*SIGNAL* /// This signal is emitted when cursor is going out of left side. virtual void CursorOutRight(); //*SIGNAL* /// This signal is emitted when cursor is going out of right side. virtual void CursorOutUp(); //*SIGNAL* /// This signal is emitted when cursor is going out of upper side. virtual void CursorOutDown(); //*SIGNAL* /// This signal is emitted when cursor is going out of bottom side. virtual void DoubleClicked(); //*SIGNAL* /// This signal is emitted when widget is double clicked. ``` ## code ```cpp // TGTextEntry // 单个文本框 TGTextEntry *fTestText = new TGTextEntry(frame, new TGTextBuffer(100)); fTestText->SetToolTipText("This is a text entry widget"); fTestText->Resize(300, fTestText->GetDefaultHeight()); frame->AddFrame(fTestText, new TGLayoutHints(kLHintsTop | kLHintsLeft, 10, 2, 2, 2)); // fTestText->Clear();//清除内容 std::string command = fTestText->GetText(); ``` ## example