Qt之QLineEdit详解(附源码)
原博客地址:http://blog.csdn.net/liang19890820/article/details/52044639,感謝原作者總結和分享。
簡述
QLineEdit是一個單行文本輸入框。
QLineEdit允許用戶輸入和編輯單行純文本,提供了很多有用的編輯功能,包括:撤消和重做、剪切和粘貼、以及拖放(見setDragEnabled())。
通過改變輸入框的echoMode(),同時也可以設置為一個“只寫”字段,用于輸入密碼等。
文本的長度可以被限制為maxLength(),可以使用一個validator()或inputMask()來任意限制文本。當在同一個輸入框中切換驗證器和輸入掩碼的時候,最好是清除驗證器或輸入掩碼,防止不確定的行為。
- 簡述
- 內容
- 詳細介紹
- 共有類型
- 常用接口
- 信號
- 共有槽
- 示例
- QLineEditEchoMode效果
- 效果
- 源碼
- 自定義搜索框
- 效果
- 源碼
- 驗證器
- 效果
- 源碼
- 輸入掩碼
- 效果
- 源碼
- 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?
返回顯示的文本。默認值為一個空字符串。?
如果echoMode是Normal,和text()返回的一樣;如果EchoMode是Password或PasswordEchoOnEdit,會返回平臺相關的密碼掩碼字符,長度為text().length(),例如:"******";如果EchoMode是NoEcho,返回一個空字符串""。QString selectedText() const?
返回選中的的文本。如果沒有選中,返回一個空字符串。默認為一個空字符串。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?
當輸入框為空時,輸入框顯示一個灰色的占位符文本。默認值為一個空字符串。?
通常,一個空的輸入框顯示占位符文本,即使它有焦點。然而,如果內容水平居中,當輸入框有焦點時,占位符文本不顯示在光標下。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() 或返回一個空字符串。傳遞一個空字符串可以取消驗碼并返回一個正常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 | 二進制數據字符是允許的,但不是必須要的。 |
| > | 所有的字符字母都大寫 |
| < | 所有的字符字母都小寫 |
| ! | 關閉大小寫轉換 |
| \ | 使用 \ 去轉義上述列出的字符。 |
掩碼由掩碼字符和分隔符字符串組成,后面可以跟一個分號和用于空白的字符,空白字符在編輯后總是從文本中刪除。
示例:
| 000.000.000.000;_ | IP地址,空白是_。 |
| HH:HH:HH:HH:HH:HH;_ | MAC地址。 |
| 0000-00-00 | ISO日期,空白是空格。 |
| >AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# | License號,空白是-和所有(字母)字符轉換為大寫。 |
信號
void selectionChanged()?
只要選擇改變這個信號就會被發射。void cursorPositionChanged(int old, int new)?
只要光標移動,這個信號就會發射。前面的位置old,新的位置是new。void editingFinished()
- void returnPressed()
- void textChanged(const QString & text)
- void textEdited(const QString & text)?
參考:“詳細描述”
共有槽
void clear()?
清除輸入框內容void copy() const?
如果echoMode()是Normal,將選中的文本復制到剪貼板。void cut()?
如果echoMode()是Normal,將所選文本復制到剪貼板并刪除它。?
如果當前的驗證不允許刪除選定的文本,cut()將復制而不刪除。void paste()?
如果輸入框不是只讀的,插入剪貼板中的文本到光標所在位置,刪除任何選定的文本。?
如果最終的結果不被當前的驗證器接受,將沒有任何反應。void redo()?
重做上次操作,如果redo可用(isRedoAvailable() )。void selectAll()?
選中所有文本(即:高亮),并將光標移動到末尾。當一個默認值被插入時,這非常有用,因為如果用戶在點擊部件之前就輸入,選中的文本將被刪除。void setText(const QString &)?
設置輸入框顯示的文本。void undo()?
撤消上次操作,如果撤消可用( isUndoAvailable())。取消任何當前的選中,并更新選中到當前光標位置。
示例
QLineEdit::EchoMode效果
首先,來演示QLineEdit::EchoMode的效果。
效果
源碼
[cpp]?view plaincopy自定義搜索框
關于搜索框,我們經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。
效果
源碼
通過QLineEdit的addAction()函數來加入action,這里我們使用了重載函數。
[cpp]?view plaincopy
槽函數,用于獲取輸入框中的內容,然后處理。
[cpp]?view plaincopy
驗證器
通常情況下,我們會對用戶的輸入做一些限制,可以通過驗證起來設置,常見的有:整形、浮點型及其它自定義驗證器。
效果
源碼
[cpp]?view plaincopy輸入掩碼
要限制用戶輸入,除了驗證器,還可以使用輸入掩碼,常見的有IP、MAC地址、日期、License號等。
效果
源碼
[cpp]?view plaincopy源碼下載地址:http://download.csdn.net/detail/rl529014/9596939
總結
以上是生活随笔為你收集整理的Qt之QLineEdit详解(附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongo分组查询,统计 Group.g
- 下一篇: 美创科技荣获国家信息安全漏洞库(CNNV