欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt實(shí)現(xiàn)帶字?jǐn)?shù)限制的文字輸入框

 更新時(shí)間:2022年04月09日 09:34:30   作者:師從名劍山  
這篇文章介紹了Qt實(shí)現(xiàn)帶字?jǐn)?shù)限制文字輸入框的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

核心構(gòu)思

核心的點(diǎn)在于,限制輸入的字?jǐn)?shù);主要的方法為創(chuàng)建一個(gè)組合窗口

img

  • 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)文章

最新評(píng)論