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ù)量,來選擇是不是需要截取文本;光標(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
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談C++的語句語法與強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換
這篇文章主要介紹了淺談C++的語句語法與強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C++實(shí)現(xiàn)Armadillo庫與OpenCV庫之間的數(shù)據(jù)格式轉(zhuǎn)換
在C++領(lǐng)域,數(shù)據(jù)格式轉(zhuǎn)換是常見且關(guān)鍵的任務(wù),尤其是在使用多個(gè)不同的庫進(jìn)行復(fù)雜的數(shù)據(jù)處理時(shí),Armadillo和OpenCV是兩個(gè)在科學(xué)計(jì)算和計(jì)算機(jī)視覺領(lǐng)域非常受歡迎的庫,下面我們將詳細(xì)探討如何在C++中實(shí)現(xiàn)Armadillo庫與OpenCV庫之間的數(shù)據(jù)格式轉(zhuǎn)換,需要的朋友可以參考下2025-03-03
C語言的isatty函數(shù)和ttyname函數(shù)以及sendmsg函數(shù)用法
這篇文章主要介紹了C語言的isatty函數(shù)和ttyname函數(shù)以及sendmsg函數(shù)用法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
基于OpenCV實(shí)現(xiàn)的人臉簽到系統(tǒng)源代碼
本文從實(shí)際背景和需求出發(fā),采用人臉識(shí)別簽到考勤改變了傳統(tǒng)人工檢驗(yàn)的做法,極大提高了組織效率和辦事能力,這篇文章主要給大家介紹了關(guān)于如何基于OpenCV實(shí)現(xiàn)的人臉簽到系統(tǒng)的相關(guān)資料,需要的朋友可以參考下2024-04-04
C++基于遞歸和非遞歸算法判定兩個(gè)二叉樹結(jié)構(gòu)是否完全相同(結(jié)構(gòu)和數(shù)據(jù)都相同)
這篇文章主要介紹了C++基于遞歸和非遞歸算法判定兩個(gè)二叉樹結(jié)構(gòu)是否完全相同,若判斷二叉樹的結(jié)構(gòu)和數(shù)據(jù)都相同則為完全相同.涉及C++二叉樹的創(chuàng)建、遍歷、比較等相關(guān)操作技巧,需要的朋友可以參考下2017-05-05

