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

QT實(shí)現(xiàn)單詞檢索軟件的示例代碼

 更新時(shí)間:2022年01月19日 09:34:56   作者:頭鐵鍵盤(pán)俠  
本文主要介紹了QT實(shí)現(xiàn)單詞檢索軟件的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

功能介紹

1、可檢測(cè)出英文內(nèi)容中某個(gè)單詞出現(xiàn)的次數(shù)
2、可從英文內(nèi)容中提取以某個(gè)字母為首的所有單詞
3、可將修改的內(nèi)容從新保存到txt文件中

源代碼

.pro文件

無(wú)增改

.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    QString aFilename;//添加部分

private slots:
    void on_openpushButton_clicked();//添加部分(無(wú)需手動(dòng)添加)

    void on_savepushButton_clicked();//添加部分(無(wú)需手動(dòng)添加)

    void on_numpushButton_clicked();//添加部分(無(wú)需手動(dòng)添加)

    void on_wordpushButton_clicked();//添加部分(無(wú)需手動(dòng)添加)

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp文件(不含main函數(shù)的那個(gè))

#include "widget.h"
#include "ui_widget.h"    
#include<QFileDialog>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->findtextEdit->setText("將檢索內(nèi)容復(fù)制于此!");
    ui->resulttextEdit->setText("檢索結(jié)果顯示于此!");
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_openpushButton_clicked()//用來(lái)打開(kāi)一個(gè)txt文本文件
{
    QString curpath=QDir::currentPath();
    QString dlgTitle="打開(kāi)一個(gè)文件";
    QString filter="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    aFilename=QFileDialog::getOpenFileName(this,dlgTitle,curpath,filter);
    QFile afile(aFilename);
    afile.open(QIODevice::ReadOnly|QIODevice::Text);
    ui->findtextEdit->setText(afile.readAll());
    afile.close();
}
void Widget::on_savepushButton_clicked()//用以保存txt文本文件
{
    QFile afile(aFilename);
    afile.open(QIODevice::WriteOnly|QIODevice::Text);
    QString str=ui->findtextEdit->toPlainText();
    QByteArray strbyte=str.toUtf8();
    afile.write(strbyte,strbyte.length());
    afile.close();
}
bool is_word(QString s)//用于判斷字符是否為英文字符
{

    QByteArray byte = s.toUtf8();
    if((int(byte.at(0))>=65&&int(byte.at(0))<=90)||(int(byte.at(0))>=97&&int(byte.at(0))<=122))
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool delete_thesame(QString &word,QStringList &w_list)//相同的單詞將不進(jìn)行二次存儲(chǔ),保證檢索處來(lái)的每個(gè)單詞具有唯一性
{
    for(int i=0;i<w_list.size();i++)
    {
        if(w_list.at(i).compare(word,Qt::CaseInsensitive)==0)
        {
            return false;
        }
    }
    return true;
}
void get_word(int &index,QString &word,QStringList &w_list,QString &str)//將目標(biāo)單詞單詞進(jìn)行添加存儲(chǔ)
{
    while(index+1<=str.length()&&is_word(str.at(index)))
    {
        word+=str.at(index);
        index++;
    }
    if(delete_thesame(word,w_list))
    {
        w_list.append(word);
    }

    word="";
}


void Widget::on_numpushButton_clicked()
{
    QString word=ui->wordlineEdit->text();//獲取內(nèi)容
    int NUM=0;								//初始化檢索單詞次數(shù)為0
    QString text = ui->findtextEdit->toPlainText();
    QStringList number_list = text.split("\n");
    for (int i = 0; i < number_list.size(); ++i)
    {
        int is_ok=1;//若為0,則表明字符串中已經(jīng)沒(méi)有我們需要的單詞了
        int index=-word.length();
        QString str0=":"+number_list.at(i)+":";//“:”是為了方便后面的編程
        while(is_ok)
        {
            index=str0.indexOf(word,word.length()+index);//這里需要去理解indexof函數(shù)的作用
            if(index!=-1){
                if(!is_word(str0.at(index+word.length()))&&!is_word(str0.at(index-1)))//判斷目標(biāo)單詞是否為一個(gè)個(gè)體,即該單詞的首尾是否為非英文字符(上面“:”的作用體現(xiàn)于此)
                NUM++;
            }
            else {
                is_ok=0;
            }
        }
    }
    ui->numlineEdit->setText(QString::number(NUM,10));
}

void Widget::on_wordpushButton_clicked()
{
    int A_is_a;
    int index=0;
    //是否發(fā)現(xiàn)on_numpushButton_clicked()函數(shù)中也出現(xiàn)如下兩句
    QString text = ui->findtextEdit->toPlainText();
    QStringList word_list = text.split("\n");
    //判斷yesradioButton和noradioButton按鈕是否被選中
    if(ui->yesradioButton->isChecked()) A_is_a=1;
    if(ui->noradioButton->isChecked()) A_is_a=0;
    
    QString none=ui->alphabetlineEdit->text();//獲取內(nèi)容

    QString word;
    QStringList w_list;

    for (int i = 0; i < word_list .size(); ++i)
    {
        QString str = word_list .at(i);
        index=0;//初始化檢索下標(biāo)為0

        while(index+1<=str.length())
        {

            if((index==0||!is_word(str.at(index-1)))&&is_word(str.at(index)))//若該字符為英文,且其前面為非英文
            {
                 switch(A_is_a)
                 {
                     case 1:
                         if(none.compare(str.at(index))==0)
                         {
                            get_word(index,word,w_list,str);
                         }
                         else
                         {
                             while(index+1<=str.length()&&is_word(str.at(index)))
                             {
                                   index++;
                             }
                         }
                     break;
                     case 0:
                         if(none.compare(str.at(index),Qt::CaseInsensitive)==0)
                         {
                            get_word(index,word,w_list,str);
                         }
                         else
                         {
                             while(index+1<=str.length()&&is_word(str.at(index)))
                             {
                                   index++;
                             }
                         }
                     break;
                 default:break;
                 }
            }
            else
            {
                index++;
            }
        }
    }

  ui->resulttextEdit->clear();
  for(int i=0;i<w_list.count();i++)
  {
      ui->resulttextEdit->append(w_list.at(i));
  }
}

.ui文件

在這里插入圖片描述

對(duì)應(yīng)程序中的自定義控件名稱(chēng)如下:

findtextEdit:3
resulttextEdit:4
wordlineEdit:6
numlineEdit:9
alphabetlineEdit:5

openpushButton:1
savepushButton:2
numpushButton:7
wordpushButton:8

yesradioButton:是
noradioButton:否

Label控件僅僅在ui中修改標(biāo)題內(nèi)容,程序中沒(méi)有其它操作,所以作者選擇默認(rèn)系統(tǒng)給的名稱(chēng)。

到此這篇關(guān)于QT實(shí)現(xiàn)單詞檢索軟件的示例代碼的文章就介紹到這了,更多相關(guān)QT 單詞檢索軟件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++迭代器失效問(wèn)題及解決

    C++迭代器失效問(wèn)題及解決

    這篇文章主要介紹了C++迭代器失效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C++中類(lèi)型推斷(auto和decltype)的使用

    C++中類(lèi)型推斷(auto和decltype)的使用

    在C++11之前,每個(gè)數(shù)據(jù)類(lèi)型都需要在編譯時(shí)顯示聲明,在運(yùn)行時(shí)限制表達(dá)式的值,但在C++的新版本之后,引入了 auto 和 decltype等關(guān)鍵字,本文就來(lái)介紹一下C++中類(lèi)型推斷(auto和decltype)的使用,感興趣的可以了解一下
    2023-12-12
  • 程序員都不知道C語(yǔ)言中的這些小細(xì)節(jié)

    程序員都不知道C語(yǔ)言中的這些小細(xì)節(jié)

    本文通過(guò)7到實(shí)例題目給大家展示C語(yǔ)言中的一些小細(xì)節(jié),很少有朋友真正的掌握,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • QT應(yīng)用啟動(dòng)失敗排查方法小結(jié)

    QT應(yīng)用啟動(dòng)失敗排查方法小結(jié)

    啟動(dòng)QT應(yīng)用經(jīng)常會(huì)碰到應(yīng)用啟動(dòng)失敗,qt platform plugin無(wú)法啟動(dòng),本文就來(lái)介紹一下QT應(yīng)用啟動(dòng)失敗排查方法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解以下
    2023-09-09
  • C++內(nèi)存查找實(shí)例

    C++內(nèi)存查找實(shí)例

    這篇文章主要介紹了C++內(nèi)存查找實(shí)例,可實(shí)現(xiàn)Windows程序設(shè)計(jì)中的內(nèi)存查找功能,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言手把手教你實(shí)現(xiàn)貪吃蛇AI(中)

    C語(yǔ)言手把手教你實(shí)現(xiàn)貪吃蛇AI(中)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言手把手教你實(shí)現(xiàn)貪吃蛇AI的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++vector的insert函數(shù)用法小結(jié)

    C++vector的insert函數(shù)用法小結(jié)

    std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個(gè)元素、多個(gè)相同元素、一個(gè)范圍的元素或初始化列表中的元素,插入操作可能會(huì)使插入點(diǎn)之后的迭代器失效,并且時(shí)間復(fù)雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧
    2025-03-03
  • 用VC++6.0實(shí)現(xiàn)石頭剪刀布游戲的程序

    用VC++6.0實(shí)現(xiàn)石頭剪刀布游戲的程序

    最先看到這個(gè)游戲代碼是python版的,后來(lái)看到有小伙伴用VC++重寫(xiě)了一遍,運(yùn)行之后發(fā)現(xiàn)有些小bug,便嘗試這修復(fù)了一下,并增加了些小功能,這里分享給大家。
    2015-03-03
  • C語(yǔ)言位段(位域)機(jī)制結(jié)構(gòu)體的特殊實(shí)現(xiàn)及解析

    C語(yǔ)言位段(位域)機(jī)制結(jié)構(gòu)體的特殊實(shí)現(xiàn)及解析

    這篇文章主要為大家介紹了C語(yǔ)言位段位域機(jī)制結(jié)構(gòu)體的特殊實(shí)現(xiàn)講解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • 基于C語(yǔ)言實(shí)現(xiàn)2048游戲

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

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

最新評(píng)論

六盘水市| 阆中市| 华阴市| 宝山区| 莲花县| 绥化市| 扶风县| 出国| 增城市| 绍兴县| 化隆| 黎川县| 永和县| 内江市| 磴口县| 三亚市| 维西| 土默特右旗| 奇台县| 龙陵县| 新巴尔虎右旗| 应用必备| 金门县| 石泉县| 忻州市| 长乐市| 玉林市| 渝北区| 蓝田县| 札达县| 彰化市| 通河县| 余江县| 宜宾县| 桃江县| 苍梧县| 确山县| 宜州市| 博爱县| 平潭县| 广平县|