最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt中QTextEdit限制只能輸入數(shù)字英文逗號(hào)

 更新時(shí)間:2023年06月29日 10:38:39   作者:AlwaysWin丶  
這篇文章主要給大家介紹了關(guān)于Qt中QTextEdit限制只能輸入數(shù)字英文逗號(hào)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

在開發(fā)中,經(jīng)常會(huì)碰到需要限制用戶的輸入,如只能輸入數(shù)字 英文等。關(guān)于用戶的文本輸入一般使用QLineEdit QTextiEdit,對這兩個(gè)控件的限制需要使用不同的方法。

QLineEdit的限制

眾所周知,Qt中有setValidator方法可以限制QLineEdit的輸入內(nèi)容,包括已實(shí)現(xiàn)好的如QIntValidator、QDoubleValidator等,也可以使用正則表達(dá)式來限制輸入,如下所示:

m_pLineEdit = new QLineEdit(this);
    
//設(shè)置只能輸入數(shù)字
m_pLineEdit->setValidator(new QIntValidator(1, 65535));
 
//設(shè)置只能輸入英文大小寫字母和英文逗號(hào)
QRegExp regexp;
regexp.setPattern("^[a-zA-Z0-9,]+$");
m_pLineEdit->setValidator(new QRegExpValidator(regexp));

QTextEdit的限制

而QTextEdit不能與QLineEdit一樣通過現(xiàn)有的方法來設(shè)置,只能另辟蹊徑,因?yàn)镼TextEdit在文本改變時(shí)會(huì)觸發(fā)QTextEdit::textChanged 信號(hào),所以可以獲取實(shí)時(shí)改變的文本來限制輸入,如下所示:

//連接信號(hào)槽
connect(ui.textEdit, &QTextEdit::textChanged, this, &Widget::textEditChanged);
 
//槽函數(shù)實(shí)現(xiàn)
void Widget::textEditChanged()
{
	//只能輸入數(shù)字 字母 英文逗號(hào)
	QRegExp reg;
	reg.setPattern("^[a-zA-Z0-9,]+$");
 
	QString strText = ui.textEdit->toPlainText();
 
	if (reg.exactMatch(strText))
	{
		m_symtext = strText;
	}
	else
	{
		ui.textEdit->setText(m_symtext);
	}
}
private:
    QString m_symtext;

  此時(shí)能發(fā)現(xiàn)已經(jīng)不能輸入不合法的內(nèi)容了,還有一個(gè)小缺陷,輸入限制內(nèi)容時(shí),光標(biāo)會(huì)跳到最前面,這個(gè)也可以進(jìn)行限制,完整內(nèi)容:

void Widget::textEditChanged()
{
	//只能輸入數(shù)字 字母 英文逗號(hào)
	QRegExp reg;
	reg.setPattern("^[a-zA-Z0-9,]+$");
	QString strText = ui.textEdit->toPlainText();
	if (reg.exactMatch(strText))
	{
		m_symtext = strText;
	}
	else
	{
		int offset = strText.length() - m_symtext.length();
		//改變光標(biāo)的位置
		QTextCursor cursor = ui.textEdit->textCursor();
		auto pos = cursor.position();
		pos = pos >= offset ? pos - offset : pos;
		ui.textEdit->setText(m_symtext);
		cursor.setPosition(pos);
		ui.textEdit->setTextCursor(cursor);
	}
}

補(bǔ)充:QTextEdit限制文本長度

  QString textContent = this->toPlainText();
    int length = textContent.count();
    int maxLength = maxLen; // 最大字符數(shù)
    if(length > maxLength)
    {
        int position = this->textCursor().position();
        QTextCursor textCursor = this->textCursor();
        textContent.remove(position - (length - maxLength), length - maxLength);
        this->setText(textContent);
        textCursor.setPosition(position - (length - maxLength));
        this->setTextCursor(textCursor);
    }

總結(jié)

到此這篇關(guān)于Qt中QTextEdit限制只能輸入數(shù)字英文逗號(hào)的文章就介紹到這了,更多相關(guān)QTextEdit限制輸入數(shù)字英文逗號(hào)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入解析C++中的指針數(shù)組與指向指針的指針

    深入解析C++中的指針數(shù)組與指向指針的指針

    以下是對C++中的指針數(shù)組與指向指針的指針進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++讀取注冊表的實(shí)現(xiàn)方法

    C++讀取注冊表的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++讀取注冊表的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • 實(shí)現(xiàn)Dijkstra算法最短路徑問題詳解

    實(shí)現(xiàn)Dijkstra算法最短路徑問題詳解

    這篇文章主要介紹了實(shí)現(xiàn)Dijkstra算法最短路徑問題詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++定義和初始化string對象實(shí)例詳解

    C++定義和初始化string對象實(shí)例詳解

    這篇文章主要為大家介紹了C++定義和初始化string對象實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++如何實(shí)現(xiàn)簡單的計(jì)時(shí)器詳解

    C++如何實(shí)現(xiàn)簡單的計(jì)時(shí)器詳解

    因?yàn)樽罱e著無聊就想著要不用C++寫點(diǎn)什么東西,仔細(xì)想了想其實(shí)自己的C++學(xué)的也不怎么好,寫個(gè)簡單的計(jì)時(shí)器吧!所以下面這篇文章主要介紹了利用C++如何實(shí)現(xiàn)簡單的計(jì)時(shí)器,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C語言內(nèi)存泄漏常見情況及解決方案詳解

    C語言內(nèi)存泄漏常見情況及解決方案詳解

    這篇文章主要為大家介紹了C語言內(nèi)存泄漏常見情況及解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C++詳細(xì)講解模擬實(shí)現(xiàn)位圖和布隆過濾器的方法

    C++詳細(xì)講解模擬實(shí)現(xiàn)位圖和布隆過濾器的方法

    位圖(bitset)是一種常用的數(shù)據(jù)結(jié)構(gòu),常用在給一個(gè)很大范圍的數(shù),判斷其中的一個(gè)數(shù)是不是在其中。在索引、數(shù)據(jù)壓縮方面有很大的應(yīng)用。布隆過濾器是由布隆提出的,它實(shí)際上是一個(gè)很長的二進(jìn)制向量和一系列隨機(jī)映射函數(shù)。布隆過濾器可以用于檢索一個(gè)元素是否在一個(gè)集合中
    2022-06-06
  • linux c 獲得當(dāng)前進(jìn)程的進(jìn)程名和執(zhí)行路徑(示例)

    linux c 獲得當(dāng)前進(jìn)程的進(jìn)程名和執(zhí)行路徑(示例)

    如何得到當(dāng)前進(jìn)程的進(jìn)程名和執(zhí)行路徑。寫了個(gè)程序分享一下
    2013-07-07
  • VC中CWinThread類以及和createthread API的區(qū)別分析

    VC中CWinThread類以及和createthread API的區(qū)別分析

    這篇文章主要介紹了VC中CWinThread類以及和createthread API的區(qū)別分析,較為詳細(xì)的講述了CWinThread類的原理,并以實(shí)例形式對AfxBeginThread函數(shù)的內(nèi)部實(shí)現(xiàn)進(jìn)行了解釋說明,需要的朋友可以參考下
    2014-10-10
  • String底層函數(shù)的實(shí)現(xiàn)方式詳解

    String底層函數(shù)的實(shí)現(xiàn)方式詳解

    這篇文章主要介紹了String底層函數(shù)的實(shí)現(xiàn)方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09

最新評論

昭苏县| 夏邑县| 潍坊市| 乌鲁木齐市| 吴旗县| 鄂尔多斯市| 米脂县| 永仁县| 盐亭县| 政和县| 策勒县| 游戏| 扎赉特旗| 公安县| 富蕴县| 永善县| 黑河市| 榕江县| 西峡县| 勐海县| 怀柔区| 洛隆县| 淮阳县| 苗栗县| 本溪市| 荣昌县| 高邑县| 九台市| 淮安市| 太仓市| 县级市| 山西省| 四子王旗| 彭州市| 合水县| 哈密市| 平利县| 大姚县| 南溪县| 宝兴县| 宣城市|