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

Qt如何實(shí)現(xiàn)輸入框@聯(lián)系人的@檢測(cè)的示例

 更新時(shí)間:2022年08月01日 15:20:37   作者:何名取  
本文主要介紹了Qt如何實(shí)現(xiàn)輸入框@聯(lián)系人的@檢測(cè)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近在用qt做通訊類的客戶端軟件,其中有一項(xiàng)功能類似與微信和QQ聊天時(shí)的@全體人員和@指定聯(lián)系人。下面就來(lái)探究一下如何實(shí)現(xiàn)這項(xiàng)功能。

解決思路

這項(xiàng)功能主要使用QTextEdit來(lái)進(jìn)行輸入,當(dāng)輸入@符號(hào)時(shí),彈出聯(lián)系人來(lái)進(jìn)行選擇指定的艾特聯(lián)系人。

  • 當(dāng)我們輸入@時(shí),會(huì)先按下Shift按鍵不松,再按下字母鍵上方的數(shù)字鍵的2,也就是@鍵。因此,我們首先考慮使用按鍵事件來(lái)檢測(cè)是否按下了這兩個(gè)按鍵,當(dāng)按下這兩個(gè)按鍵時(shí),跳轉(zhuǎn)至事件處理函數(shù)來(lái)進(jìn)行后續(xù)處理。
  • 另一種方法是利用QTextEdit的cursorPositionChanged()光標(biāo)位置變化信號(hào)來(lái)進(jìn)行檢測(cè)字符輸入,再使用QTextCursor和QTextBlock來(lái)檢測(cè)輸入字符是否為“@”再進(jìn)行后續(xù)處理。

方法一:按鍵事件

首先使用方法一來(lái)嘗試實(shí)現(xiàn)。方法一中需要重寫按鍵事件函數(shù):

#ifndef MYEDIT_H
#define MYEDIT_H

#include <QObject>
#include <QTextEdit>
#include <QKeyEvent>

class MyEdit : public QTextEdit
{
    Q_OBJECT
public:
    MyEdit(QWidget *parent);
    
protected:
    //按鍵事件
    void keyPressEvent(QKeyEvent *e);
};

#endif // MYEDIT_H
#include "myedit.h"
#include <QDebug>

MyEdit::MyEdit(QWidget *parent):
    QTextEdit (parent)
{

}

void MyEdit::keyPressEvent(QKeyEvent *e)
{
    if((e->modifiers() == Qt::ShiftModifier) && (e->key() == Qt::Key_At))
    {
        qDebug()<<"@at";
        append(QKeySequence(e->key()).toString());//或者使用append(e->text());                
        return;
    }
    else {
        QTextEdit::keyPressEvent(e);
    }
}

這種方法有兩個(gè)缺陷,第一是輸入@后在輸入框中會(huì)產(chǎn)生換行,另外一個(gè)是在開啟中文輸入法的時(shí)候會(huì)失效,只有切換到英文輸入法的情況下才會(huì)起作用。

方法二:光標(biāo)位置變化信號(hào)

方法二要用到QTextEdit自帶的信號(hào)

void MainWindow::on_textEdit_2_cursorPositionChanged()
{
    QTextCursor tc = ui->textEdit_2->textCursor();
    QTextBlock tb = tc.block();
    if(!tb.text().isEmpty())
    {
        QString tx = tb.text();
        if(tx.endsWith("@"))
        {
            qDebug()<<"@at";
        }
    }
}

第二種方法比較簡(jiǎn)單,而且沒(méi)有以上第一張方法的缺陷,大家可以根據(jù)需要選擇性的進(jìn)行使用。

到此這篇關(guān)于Qt如何實(shí)現(xiàn)輸入框@聯(lián)系人的@檢測(cè)的示例的文章就介紹到這了,更多相關(guān)Qt 輸入框@檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)管理系統(tǒng)的示例代碼

    C++實(shí)現(xiàn)管理系統(tǒng)的示例代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)管理系統(tǒng)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C++文件相關(guān)函數(shù)CreateFile|ReadFile|WriteFile用法詳解

    C++文件相關(guān)函數(shù)CreateFile|ReadFile|WriteFile用法詳解

    這篇文章主要為大家詳細(xì)介紹了c++有關(guān)文件創(chuàng)建、讀取和寫入的api:CreateFile、ReadFile、WriteFile的具體使用,需要的可以參考下
    2023-04-04
  • C++中String類的常用接口函數(shù)總結(jié)

    C++中String類的常用接口函數(shù)總結(jié)

    這篇文章主要介紹了C++中Stirng類的常用接口函數(shù),文中有詳細(xì)的代碼示例供大家參考,對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的同學(xué)可以跟著小編一起來(lái)學(xué)習(xí)
    2023-06-06
  • C語(yǔ)言菜鳥基礎(chǔ)教程之常量和變量

    C語(yǔ)言菜鳥基礎(chǔ)教程之常量和變量

    在C語(yǔ)言中,常量和變量都是可以用來(lái)存儲(chǔ)和表示數(shù)據(jù)的,常量值在程序執(zhí)行的過(guò)程中是不可變的,而變量是可變的
    2017-10-10
  • Windows下Qt讀取系統(tǒng)的內(nèi)存、CPU、GPU等使用信息的示例代碼

    Windows下Qt讀取系統(tǒng)的內(nèi)存、CPU、GPU等使用信息的示例代碼

    在當(dāng)今計(jì)算機(jī)應(yīng)用廣泛的領(lǐng)域中,了解系統(tǒng)的內(nèi)存、CPU和GPU使用情況是非常重要的,本文將介紹如何使用Qt和Windows API來(lái)讀取系統(tǒng)的內(nèi)存、CPU和GPU使用詳細(xì)信息,將提供一個(gè)完整的示例代碼,需要的朋友可以參考下
    2024-01-01
  • C++內(nèi)存模型與名稱空間概念講解

    C++內(nèi)存模型與名稱空間概念講解

    這篇文章主要介紹了C++內(nèi)存模型與名稱空間,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • 詳解C++11中綁定器bind的原理與使用

    詳解C++11中綁定器bind的原理與使用

    C++11中引入的function機(jī)制,其中綁定器主要有三種:bind1st、bind2nd、bind(C++11)。本文就來(lái)和大家聊聊這些綁定器的底層實(shí)現(xiàn)原理與使用場(chǎng)景,需要的可以參考一下
    2022-12-12
  • C++編寫簡(jiǎn)易的飛機(jī)大戰(zhàn)

    C++編寫簡(jiǎn)易的飛機(jī)大戰(zhàn)

    一款自己設(shè)計(jì)的飛機(jī)小游戲,本程序于運(yùn)行環(huán)境WINDOWS XP系統(tǒng),采用C++語(yǔ)言編寫。游戲具有得分排名榜,而且在游戲完成后可以提交得分到網(wǎng)絡(luò)上的世界排名榜中。
    2015-08-08
  • 基于C語(yǔ)言實(shí)現(xiàn)五子棋游戲

    基于C語(yǔ)言實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++實(shí)現(xiàn)掃雷小游戲

    C++實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論

平谷区| 江口县| 武城县| 灵石县| 永济市| 乌兰察布市| 伊金霍洛旗| 阳高县| 阿克| 威宁| 吉木乃县| 科技| 宕昌县| 云南省| 乳山市| 鄂伦春自治旗| 远安县| 武强县| 苗栗市| 大方县| 莆田市| 沁源县| 湖北省| 五家渠市| 郁南县| 土默特左旗| 崇信县| 信阳市| 南涧| 讷河市| 常德市| 阜康市| 米易县| 尼勒克县| 东安县| 永德县| 容城县| 丹阳市| 天全县| 正宁县| 额尔古纳市|