輸入類控件
- QLineEdit
- QTextEdit
- QComboBox
- QSpinBox
- QDateTimeEdit
- QDial
- QSlider
QLineEdit
QLineEdit用來表示單行輸入框,可以輸入一段文本,但是不能換行;
核心屬性:
屬性 | 說明 |
---|---|
text | 輸入框中的文本 |
inputMask | 輸入內容格式約束 |
maxLength | 最大長度 |
frame | 是否添加邊框 |
echoMode | 顯示方式: 1. QLineEdit::Normal: 這是默認值,文本框會顯示輸入的文本。2. QLineEdit::Password: 這種模式下,輸入的字符會被隱藏,通常使用(*)或(=)來替換 3. QLineEdit::NoEcho: 這種模式下,文本框不會回顯任何輸入的字符 |
cursorPosition | 光標所在位置 |
alignment | 文字對齊方式,設置水平和垂直方式的對齊 |
dragEnabled | 是否允許拖拽 |
readOnly | 是否是只讀的(不允許修改) |
placeHolderText | 當輸入框內容為空的時候,顯示什么樣子的提示信息 |
clearButtonEnabled | 是否會自動顯示出“清除按鈕” |
核心信號:
信號 | 說明 |
---|---|
void cursorPositionChanged(int old, int new) | 當鼠標移動時發出信號,old為先前的位置,new為新位置 |
void editingFinished() | 當按返或回車鍵時,或者行編輯失去焦點時,發出此信號 |
void returnPressed() | 當返回或回車鍵按下時觸發該信號,如果設置了驗證器,那么必須通過驗證,才能觸發 |
void selectionChanged() | 當選中的?本改變時,發出此信號 |
void textChanged(const QString &text) | 當QLineEdit中的?本改變時,發出此信號,text是新的?本。代碼對?本的修改能夠觸發這個信號. |
void textEdited(const QString &text)) | 當QLineEdit中的?本改變時,發出此信號,text是新的?本。代碼對?本的修改不能觸發這個信號. |
eg1: 使用QLineEdit控件來錄入用戶信息,并且將用戶信息打印在控制臺:
當我們點擊確認的時候,就能夠在控制臺打印接收到的消息
核心代碼:
運行結果:
eg2:使用驗證器來對輸入的內容進行驗證,當驗證通過時,則將提交按鈕設置為可點擊,反之則將提交按鈕設置為不可點擊;
設計思路:
當輸入框中的內容發生變化的時候,QLineEdit會發出textEdited信號,并且這個信號還會攜帶上此時輸入框中的內容,此時我們可以捕捉這個信號,然后在對應的槽函數中使用驗證器來對輸入框中的內容進行驗證,驗證通過則將提交按鈕設置為可用狀態,否則則將提交按鈕設置為禁用狀態;
這個驗證器Qt,主要有以下幾種:
針對于驗證器,我們可以將這個驗證器設置進QLineEdit然后進行使用,也可以每次捕捉textEdited信號的時候創建出來使用,這里我們選擇第一種做法;
核心代碼如下:
運行結果:
eg3:驗證兩次輸入的密碼一致
核心代碼:
eg4: 切換顯示密碼
核心代碼:
QTextEdit
QTextEdit表示多行輸入框,也是一個富文本編輯器,并且能夠在內容超范圍時自動提供滾動條;
核心屬性:
屬性 | 說明 |
---|---|
markdown | 輸?框內持有的內容. ?持 markdown 格式. 能夠?動的對markdown ?本進?渲染成 html |
html | 輸?框內持有的內容. 可以?持?部分 html 標簽. 包括 img 和 table 等. |
placeHolderText | 輸?框為空時提?的內容. |
readOnly | 是否是只讀的 |
undoRedoEnable | 是否開啟 undo / redo 功能.按下 ctrl + z 觸發 undo;按下 ctrl + y 觸發 redo |
autoFormating | 開啟?動格式化 |
tabstopWidth | 按下縮進占多少空間 |
overwriteMode | 是否開啟覆蓋寫模式 |
acceptRichText | 是否接收富?本內容 |
verticalScrollBarPolicy | 垂直?向滾動條的出現策略?Qt::ScrollBarAsNeeded : 根據內容?動決定是否需要滾動條。這是默認值。?Qt::ScrollBarAlwaysOff : 總是關閉滾動條。?Qt::ScrollBarAlwaysOn : 總是顯?滾動條。 |
horizontalScrollBarPolicy | ?平?向滾動條的出現策略?Qt::ScrollBarAsNeeded : 根據內容?動決定是否需要滾動條。這是默認值。?Qt::ScrollBarAlwaysOff : 總是關閉滾動條。?Qt::ScrollBarAlwaysOn : 總是顯?滾動條。 |
核心信號
信號 | 說明 |
---|---|
textChanged() | ?本內容改變時觸發 |
selectionChanged() | 選中范圍改變時觸發 |
cursorPositionChanged() | 光標移動時觸發 |
undoAvailable(bool) | 可以進? undo 操作時觸發 |
redoAvailable(bool) | 可以進? redo 操作時觸發 |
copyAvaiable(bool) | ?本被選中/取消選中時觸發 |
eg1:獲取多行輸入框的內容
核心代碼:
運行結果
eg2:驗證輸入框的各種信號
QComboBox
QComboBox表示下拉框;
核心屬性:
屬性 | 說明 |
---|---|
currentText | 當前選中的?本 |
currentIndex | 當前選中的條?下標.從 0 開始計算. 如果當前沒有條?被選中, 值為 -1 |
editable | 是否允許修改,設為 true 時, QComboBox 的?為就?常接近 QLineEdit , 也可以設置 validator |
iconSize | 下拉框圖標 (?三?) 的?? |
maxCount | 最多允許有多少個條? |
核心信號:
信號 | 說明 |
---|---|
activated(int) | 當??選擇了?個選項時發出. |
activated(const QString & text) | 當??選擇了?個選項時發出 |
currentIndexChanged(int) | 當前選項改變時發出. |
currentIndexChanged(const QString & text) | 當前選項改變時發出 |
editTextChanged(const QString & text) | 當編輯框中的?本改變時發出(editable 為 true 時有效) |
eg1: 使用下拉框模擬麥當勞點餐
核心代碼:
運行結果:
eg2:從?件中加載下拉框的選項
設計圖:
核心代碼:
運行結果:
QSpinBox
使? QSpinBox 或者 QDoubleSpinBox 表? “微調框”, 它是帶有按鈕的輸?框. 可以?來輸?整
數/浮點數. 通過點擊按鈕來修改數值??.
核心屬性
屬性 | 說明 |
---|---|
value | 存儲的數值. |
singleStep | 每次調整的 “步?”. 按下?次按鈕數據變化多少. |
displayInteger | 數字的進制. 例如 displayInteger 設為 10, 則是按照 10 進制表?. 設為 2 則為 2進制表?. |
minimum | 最?值 |
maximum | 最?值 |
suffix | 后綴 |
prefix | 前綴 |
wrapping | 是否允許換? |
frame | 是否帶邊框 |
alignment | ?字對??式. |
readOnly | 是否允許修改 |
buttonSymbol | 按鈕上的圖標.UpDownArrows 上下箭頭形式;PlusMinus 加減號形式;NoButtons 沒有按鈕 |
accelerated (加速的) | 按下按鈕時是否為快速調整模式 |
correctionMode | 輸?有誤時如何修正.QAbstractSpinBox::CorrectToPreviousValue : 如果??輸?了?個?效的值(例如,在只能顯?正整數的SpinBox中輸?了負數),那么SpinBox會恢復為上?個有效值。例如,如果SpinBox的初始值是1,??輸?了-1(?效),然后SpinBox會恢復為1。QAbstractSpinBox::CorrectToNearestValue : 如果??輸?了?個?效的值,SpinBox會恢復為最接近的有效值。例如,如果SpinBox的初始值是1,??輸?了-1(?效),那么SpinBox會恢復為0。 |
keyboardTrack | 是否開啟鍵盤跟蹤.設為 true, 每次在輸?框輸??個數字, 都會觸發?次 valueChanged() 和textChanged() 信號.設為 false, 只有在最終按下 enter 或者輸?框失去焦點, 才會觸發valueChanged() 和 textChanged() 信號. |
核心信號
信號 | 說明 |
---|---|
textChanged(QString) | 微調框的?本發?改變時會觸發.參數 QString 帶有 前綴 和 后綴. |
valueChanged(int) | 微調框的?本發?改變時會觸發.參數 int, 表?當前的數值. |
eg1:調整?當勞購物?中的份數.
設計圖紙:
核心代碼:
運行結果:
QDateTimeEdit
核心屬性:
屬性 | 說明 |
---|---|
dateTime | 時間?期的值. 形如 2000/1/1 0:00:00 |
date | 單純?期的值. 形如 2001/1/1 |
time | 單純時間的值. 形如 0:00:00 |
displayFormat | 時間?期格式. 形如 yyyy/M/d H:mm; y 表?年份; M 表??份; d 表??期; H 表??時; m 表?分鐘; s 表?秒 |
minimumDateTime | 最?時間?期 |
maximumDateTime | 最?時間?期 |
timeSpec | Qt::LocalTime :顯?本地時間。Qt::UTC :顯?協調世界時(UTC)。Qt::OffsetFromUTC :顯?相對于UTC的偏移量(時差). |
核心信號:
信號 | 說明 |
---|---|
dateChanged(QDate) | ?期改變時觸發. |
timeChanged(QTime) | 時間改變時觸發. |
dateTimeChanged(QDateTime) | 時間?期任意?個改變時觸發. |
eg1:編寫一個日期計算器
核心代碼:
運行結果:
QDial
旋紐
核心屬性:
屬性 | 說明 |
---|---|
value | 持有的數值. |
minimum | 最?值 |
maximum | 最?值 |
singleStep | 按下?向鍵的時候改變的步?. |
pageStep | 按下 pageUp / pageDown 的時候改變的步?. |
sliderPosition | 界?上旋鈕顯?的 初始位置 |
tracking | 外觀是否會跟蹤數值變化.默認值為 true. ?般不需要修改. |
wrapping | 是否允許循環調整.即數值如果超過最?值, 是否允許回到最?值.(調整過程能否 “套圈”) |
notchesVisible | 是否顯? 刻度線 |
notchTarget | 刻度線之間的相對位置.數字越?, 刻度線越稀疏. |
核心信號:
信號 | 說明 |
---|---|
valueChanged(int) | 數值改變時觸發 |
rangeChanged(int, int) | 范圍變化時觸發 |
eg1:通過旋鈕來控制窗口透明度
核心代碼:
運行結果:
QSlider
QSlider 表??個滑動條.
QSlider 和 QDial 都是繼承? QAbstractSlider , 因此?法上基本相同.