Qt實現(xiàn)帶字數(shù)限制的文字輸入框
核心構(gòu)思
核心的點在于,限制輸入的字數(shù);主要的方法為創(chuàng)建一個組合窗口
textChanged
這個信號,會在你輸入字符之后發(fā)射,可以連接這個信號,在發(fā)射了信號之后,去獲取當(dāng)前QTextEdit
里的內(nèi)容,獲取數(shù)量,然后根據(jù)最大數(shù)量,來選擇是不是需要截取文本;光標(biāo)的移動的問題。在進行插入時,光標(biāo)要時刻保持在當(dāng)前位置。
文字內(nèi)容的行高。這里請看解決Qt設(shè)置QTextEdit行高的問題
代碼實現(xiàn)
// 首先連接信號 connect(ui->textEdit, &QTextEdit::textChanged, this, &LimitTextEdit::slot_handleInput); void LimitTextEdit::slot_handleInput() { auto textEdit = static_cast<QTextEdit*>(sender()); int currentNum = textEdit->toPlainText().length(); // 判斷是不是超出了字數(shù)限制 if (currentNum > m_maxWordNum) { QString text = textEdit->toPlainText(); text = text.mid(0, m_maxWordNum); int position = textEdit->textCursor().position(); textEdit->setText(text); // 獲取光標(biāo)位置 QTextCursor cursor = textEdit->textCursor(); if (position > m_maxWordNum) { // 如果當(dāng)前輸入位置為末尾的話,就直接跳到最后一個字符。 position = m_maxWordNum; } cursor.setPosition(position); textEdit->setTextCursor(cursor); currentNum = m_maxWordNum; } ui->labelCurrentNum->setNum(currentNum); }
代碼下載請看此處LimitTextEdit
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt使用QChart實現(xiàn)動態(tài)顯示溫度變化曲線
Qt的QChart是一個用于繪制圖表和可視化數(shù)據(jù)的類,提供了一個靈活的、可擴展的、跨平臺的圖表繪制解決方案,所以本文就將使用QChart實現(xiàn)動態(tài)顯示3個設(shè)備的溫度變化曲線,感興趣的可以了解一下2023-06-06C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實現(xiàn)約瑟夫環(huán)
這篇文章主要介紹了C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實現(xiàn)約瑟夫環(huán)的相關(guān)資料,需要的朋友可以參考下2017-05-05C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學(xué)習(xí)筆記
這篇文章主要為大家介紹了C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解
本文主要介紹了適合當(dāng)圖像的直方圖具有明顯單峰特征時使用,結(jié)合了三角法的原理而設(shè)計的圖像分割方法,感興趣的小伙伴可以了解一下2021-12-12C++ 將數(shù)據(jù)轉(zhuǎn)為字符串的幾種方法
這篇文章主要介紹了C++ 將數(shù)據(jù)轉(zhuǎn)為字符串的幾種方法,十分的實用,有需要的小伙伴可以參考下。2015-06-06