Qt之QLineEdit詳解(附源碼)

來源:互聯網
上載者:User
原部落格地址:http://blog.csdn.net/liang19890820/article/details/52044639,感謝原作者總結和分享。
簡述

QLineEdit是一個單行文本輸入框。

QLineEdit允許使用者輸入和編輯單行純文字,提供了很多有用的編輯功能,包括:撤消和重做、剪下和粘貼、以及拖放(見setDragEnabled())。

通過改變輸入框的echoMode(),同時也可以設定為一個“唯寫”欄位,用於輸入密碼等。

文本的長度可以被限制為maxLength(),可以使用一個validator()或inputMask()來任意限制文本。當在同一個輸入框中切換驗證器和輸入遮罩的時候,最好是清除驗證器或輸入遮罩,防止不確定的行為。

簡述 內容 詳細介紹 共有類型 常用介面 訊號 共有槽 樣本 QLineEditEchoMode效果 效果 源碼 自訂搜尋方塊 效果 源碼 驗證器 效果 源碼 輸入遮罩 效果 源碼 更多參考

內容 詳細介紹

與其相關的一個類是QTextEdit - 允許多行、富文本編輯。

可以使用setText()或insert()來改變文本,通過text()來擷取文本;顯示的文本(可能不同,詳見:EchoMode)通過displayText()來擷取。文本可以使用setSelection()或selectAll()來選中,選中的文本可以被cut()、copy()和paste(),使用setAlignment()來設定文本的對齊。

當文本改變時,會發射textChanged()訊號。當使用setText()改變文本時,textEdited()訊號也會發射。游標位置發生變化時,會發射cursorPositionChanged()訊號,當Return或Enter鍵被按下時,發射returnPressed()訊號。

當編輯完成,或者是因為輸入框失去焦點,或Return/Enter鍵被按下時,發出的editingFinished()訊號。

注意:如果輸入框有一個驗證器,returnPressed()/editingFinished()訊號只有在驗證期返回QValidator::Acceptable的時候才會被發射。

預設情況下,QLineEdit具有由平颱風格指南規定的邊框,可以通過setFrame(false)將其關閉。

預設鍵被綁定描述如下。輸入框還提供了一些編輯選項的操作功能表(通常通過單擊滑鼠右鍵調用)。

按鍵 動作
Left Arrow 游標左移一個字元
Shift+Left Arrow 游標左移並選擇一個字元
Right Arrow 游標右移一個字元
Shift+Right Arrow 游標右移並選擇一個字元
Home 將游標移動到行的開頭
End 將游標移動到行的末尾
Backspace 刪除游標左側字元
Ctrl+Backspace 刪除游標左側的單詞
Delete 刪除游標右側字元
Ctrl+Delete 刪除游標右側的單詞
Ctrl+A 全選
Ctrl+C 複製選中的文本複製到剪貼簿
Ctrl+Insert 複製選中的文本複製到剪貼簿
Ctrl+K 刪除此處至末尾所有內容
Ctrl+V 粘貼剪貼簿的文本到輸入框中
Shift+Insert 粘貼剪貼簿的文本到輸入框中
Ctrl+X 剪下選中的文本到剪貼簿
Shift+Delete 剪下選中的文本到剪貼簿
Ctrl+Z 撤銷上一次操作
Ctrl+Y 重做上一次操作
共有類型

枚舉:QLineEdit::ActionPosition

描述如何顯示加入到輸入框中的action組件。

常量 描述
QLineEdit::LeadingPosition 0 當使用布局方向Qt::LeftToRight時,組件顯示在文本左側;使用Qt::RightToLeft時,則顯示在右側。
QLineEdit::TrailingPosition 1 當使用布局方向Qt::LeftToRight時,組件顯示在文本右側;使用Qt::RightToLeft時,則顯示在左側。


枚舉:QLineEdit::EchoMode

描述輸入框如何顯示其內容。

常量 描述
QLineEdit::Normal 0 正常顯示輸入的字元,預設選項。
QLineEdit::NoEcho 1 不顯示任何輸入,常用於密碼類型,其密碼長度都需要保密的時候。
QLineEdit::Password 2 顯示平台相關的密碼掩碼字元,而不是實際的字元輸入。
QLineEdit::PasswordEchoOnEdit 3 在編輯的時候顯示字元,負責顯示密碼類型。
常用介面

這裡列舉了一些常用介面,但並非全部的,要獲得更多資訊請參考助手。

QString text() const 
返回輸入框的當前文本。

void addAction(QAction * action, ActionPosition position)

QAction * addAction(const QIcon & icon, ActionPosition position) 
添加action至指定位置。

Qt::Alignment alignment() const

void setAlignment(Qt::Alignment flag)

alignment : Qt::Alignment 
屬性儲存了輸入框的對齊(水平和垂直方向)。Qt::AlignJustify映射到Qt::AlignLeft。 
預設情況下,該屬性包含Qt::AlignLeft和Qt::AlignVCenter。

QCompleter* completer() const

void setCompleter(QCompleter * c) 
QCompleter後面詳細講解。

void deselect() 
取消選中任何已選中的文本。

QString displayText() const 
返回顯示的文本。預設值為一個Null 字元串。 
如果echoMode是Normal,和text()返回的一樣;如果EchoMode是Password或PasswordEchoOnEdit,會返回平台相關的密碼掩碼字元,長度為text().length(),例如:"******";如果EchoMode是NoEcho,返回一個Null 字元串""。

QString selectedText() const 
返回選中的的文本。如果沒有選中,返回一個Null 字元串。預設為一個Null 字元串。

int cursorPosition() const

void setCursorPosition(int)

cursorPosition : int 
屬性包含輸入框當前游標的位置。設定游標位置時,會導致應有的重繪。預設情況下,屬性值為0。

EchoMode echoMode() const

void setEchoMode(EchoMode)

echoMode : EchoMode 
屬性儲存了輸入框的顯示模式。顯示模式決定了輸入框對使用者的文本顯示。預設值為Normal 
最常用的設定是Normal,使用者輸入文本被逐字顯示;還包含其它模糊輸入,例如:NoEcho、Password和PasswordEchoOnEdit。 
組件的顯示、複製或拖動文本的行為受此設定的影響。

int maxLength() const

void setMaxLength(int)

maxLength : int 
此屬性包含文本的最大允許長度。如果文本太長,將從限制的位置截斷。預設值為32767。 
如果發生截斷任何選中的文本將取消選中,游標位置設定為0,並且顯示字串的第一部分。 
如果輸入框有一個輸入遮罩,那麼,掩碼定義字串的最大長度。

QString placeholderText() const

void setPlaceholderText(const QString &)

placeholderText : QString 
當輸入框為空白時,輸入框顯示一個灰色的預留位置文字。預設值為一個Null 字元串。 
通常,一個空的輸入框顯示預留位置文字,即使它有焦點。然而,如果內容水平置中,當輸入框有焦點時,預留位置文字不顯示在游標下。

bool isReadOnly() const

void setReadOnly(bool)

readOnly : bool 
此屬性儲存輸入框是否為唯讀。 
在唯讀模式下,使用者仍然可以將文本複製到剪貼簿,或拖放文本(如果echoMode()是Normal),但不能編輯它。 
唯讀模式下,QLineEdit也不顯示光線標。

void setSelection(int start, int length) 
從位置start選擇文本為length個字元,允許負長度。

void setValidator(const QValidator * v) 
設定輸入框的驗證器,將限制任意可能輸入的文本。如果v == 0,將會清除當前的輸入驗證器 
如果v = = 0,setValidator()刪除當前的輸入驗證器。初始設定是沒有輸入驗證器(即:接受任何輸入到maxLength())。

const QValidator * validator() const 
返回一個當前輸入的驗證器指標,如果沒有設定驗證器,返回0。

QString inputMask() const

void setInputMask(const QString & inputMask)

inputMask : QString 
此屬性儲存驗證器的輸入遮罩。如果沒設定研發,inputMask() 或返回一個Null 字元串。傳遞一個Null 字元串可以取消驗碼並返回一個正常QLineEdit。

下表列出了可在一個輸入遮罩中使用的字元。空白字元,是一個空白的預設字元,當一個字元是允許的,但不是必須的請胯下。

字元 含義
A ASCII字母字元是必須的,A-Z、a-z。
a ASCII字母字元是允許的,但不是必須的。
N ASCII字母字元是必須的,A-Z、a-z、0-9。
n ASCII字母字元是允許的,但不是必須的。
X 任何字元都是必須要的。
x 任何字元都是允許的,但不是必須要的。
9 ASCII數字是必須要的,0-9。
0 ASCII數字是允許的,但不是必須要的。
D ASCII數字是必須要的,1-9。
d ASCII數字是允許的,但不是必須要的 (1-9)。
# ASCII數字或加/減符號是允許的,但不是必須要的。
H 十六進位資料字元是必須要的,A-F、a-f、0-9。
h 十六進位資料字元是允許的,但不是必須要的。
B 位元據字元是必須要的,0-1。
b 位元據字元是允許的,但不是必須要的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.