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