QT实现单词检索软件的示例代码

功能介绍 1、可检测出英文内容中某个单词出现的次数
2、可从英文内容中提取以某个字母为首的所有单词
3、可将修改的内容从新保存到txt文件中
源代码 .pro文件

无增改
.h文件
#ifndef WIDGET_H#define WIDGET_H#include QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = nullptr); ~Widget(); QString aFilename; //添加部分private slots:void on_openpushButton_clicked(); //添加部分(无需手动添加)void on_savepushButton_clicked(); //添加部分(无需手动添加)void on_numpushButton_clicked(); //添加部分(无需手动添加)void on_wordpushButton_clicked(); //添加部分(无需手动添加)private:Ui::Widget *ui; }; #endif // WIDGET_H

.cpp文件(不含main函数的那个)
#include "widget.h"#include "ui_widget.h"#includeWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this); ui->findtextEdit->setText("将检索内容复制于此!"); ui->resulttextEdit->setText("检索结果显示于此!"); }Widget::~Widget(){delete ui; }void Widget::on_openpushButton_clicked()//用来打开一个txt文本文件{QString curpath=QDir::currentPath(); QString dlgTitle="打开一个文件"; 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)//相同的单词将不进行二次存储,保证检索处来的每个单词具有唯一性{for(int i=0; iwordlineEdit->text(); //获取内容int NUM=0; //初始化检索单词次数为0QString text = ui->findtextEdit->toPlainText(); QStringList number_list = text.split("\n"); for (int i = 0; i < number_list.size(); ++i){int is_ok=1; //若为0,则表明字符串中已经没有我们需要的单词了int index=-word.length(); QString str0=":"+number_list.at(i)+":"; //“:”是为了方便后面的编程while(is_ok){index=str0.indexOf(word,word.length()+index); //这里需要去理解indexof函数的作用if(index!=-1){if(!is_word(str0.at(index+word.length()))&&!is_word(str0.at(index-1)))//判断目标单词是否为一个个体,即该单词的首尾是否为非英文字符(上面“:”的作用体现于此)NUM++; }else {is_ok=0; }}}ui->numlineEdit->setText(QString::number(NUM,10)); }void Widget::on_wordpushButton_clicked(){int A_is_a; int index=0; //是否发现on_numpushButton_clicked()函数中也出现如下两句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(); //获取内容QString word; QStringList w_list; for (int i = 0; i < word_list .size(); ++i){QString str = word_list .at(i); index=0; //初始化检索下标为0while(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; iresulttextEdit->append(w_list.at(i)); }}

.ui文件
QT实现单词检索软件的示例代码
文章图片

对应程序中的自定义控件名称如下:
findtextEdit:3
resulttextEdit:4
wordlineEdit:6
numlineEdit:9
alphabetlineEdit:5
openpushButton:1
savepushButton:2
numpushButton:7
wordpushButton:8
yesradioButton:是
noradioButton:否
Label控件仅仅在ui中修改标题内容,程序中没有其它操作,所以作者选择默认系统给的名称。
【QT实现单词检索软件的示例代码】到此这篇关于QT实现单词检索软件的示例代码的文章就介绍到这了,更多相关QT 单词检索软件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读