iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >QT实现单词检索软件的示例代码
  • 709
分享到

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

2024-04-02 19:04:59 709人浏览 独家记忆
摘要

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

功能介绍

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

源代码

.pro文件

无增改

.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();//添加部分(无需手动添加)

    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"    
#include<QFileDialog>
Widget::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;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)//将目标单词单词进行添加存储
{
    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();//获取内容
    int NUM=0;								//初始化检索单词次数为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,则表明字符串中已经没有我们需要的单词了
        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;//初始化检索下标为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文件

在这里插入图片描述

对应程序中的自定义控件名称如下:

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

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

yesradioButton:是
noradioButton:否

Label控件仅仅在ui中修改标题内容,程序中没有其它操作,所以作者选择默认系统给的名称。

到此这篇关于QT实现单词检索软件的示例代码的文章就介绍到这了,更多相关QT 单词检索软件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: QT实现单词检索软件的示例代码

本文链接: https://www.lsjlt.com/news/162914.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • QT实现单词检索软件的示例代码
    功能介绍 1、可检测出英文内容中某个单词出现的次数2、可从英文内容中提取以某个字母为首的所有单词3、可将修改的内容从新保存到txt文件中 源代码 .pro文件 无增改 .h文件 #i...
    99+
    2022-11-13
  • QT实现年会抽奖小软件的示例代码
    目录一、效果展示:二、软件代码介绍1、工程目录2、核心代码之主类代码部分3、核心代码之线程类代码部分一、效果展示: 1、操作说明 下拉选择主题,点击开始按钮,开始滚动,再次点击停止,...
    99+
    2022-11-13
  • Java实现文件检索系统的示例代码
    示例代码 package Demo; import java.io.File; import java.io.FilenameFilter; import java.util.Sc...
    99+
    2022-11-13
  • Qt实现拖动单个控件移动的示例代码
    目录1.设置窗口拖拽属性2.创建初始控件3.选中控件进行拖动3.1响应mousePressEvent事件3.2判断控件拖动3.3事件处理3.4结束拖动做惯了静态图,今天来搞一搞动态图...
    99+
    2022-11-13
  • Django对接elasticsearch实现全文检索的示例代码
    目录前言 第一步:首先安装相关的依赖包 第二步:在django项目配置文件settings.py中注册应用 第三步:在django项目配置文件settings.py中指定搜索的后端 ...
    99+
    2022-11-12
  • Qt实现http服务的示例代码
    先看执行结果: Qt HttpServer 左边是开启的Qt Http服务,监控服务端口,及接收客户端请求;右侧是浏览器访问服务。 下面是具体代码: HttpDemo.pro QT...
    99+
    2023-05-15
    Qt实现http服务 Qt http服务 Qt http
  • C/C++ QT实现解析JSON文件的示例代码
    JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,...
    99+
    2022-11-12
  • Qt实现电子时钟的示例代码
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 添加新文件4.2 digiclock.h头文件4.3 digiclock.cpp源文件4.4 main.cpp源...
    99+
    2022-11-13
  • Vue实现简单搜索功能的示例代码
    目录1、概述2、功能逻辑2.1功能流程2.2 流程图3、功能实现3.1 vue组件化3.2 代码3.3 动态效果1、概述 在vue项目中,搜索功能是我们经常需要使用的一个场景,最常用...
    99+
    2023-03-19
    Vue实现搜索功能 Vue搜索功能 Vue搜索
  • go单例实现双重检测是否安全的示例代码
    目录现状改进双重检验示例:是否线程安全关于sync.Once关于atomic和metex结论今天看到项目中的kafka客户端包装结构体的获取是单例模式<br>单例的实现是...
    99+
    2022-11-13
  • Qt实现网络聊天室的示例代码
    目录1. 效果演示2. 预备知识2.1 QTcpServer2.2 QTcpServer信号2.3 QTcpSocket2.4 QTcpSocket信号3. 通信流程3.1 服务器端...
    99+
    2022-11-12
  • Qt实现对齐线功能的示例代码
    目录现有功能运行结果源码button.hbutton.cppwindow.hwindow.cppmain.cpp现有功能 1.添加任意数量的按钮。 2.移动按钮,通过对齐线来设置按钮...
    99+
    2022-11-13
  • Qt实现简易计时器的示例代码
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 mainwindow.h头文件4.2 mainwindow.cpp源文件五、效果演示一、项目介绍 计时器实现四个...
    99+
    2022-11-13
  • SpringBoot实现过滤敏感词的示例代码
    过滤敏感词 1. 创建一个储存要过滤的敏感词的文本文件 首先创建一个文本文件储存要过滤的敏感词 在下面的工具类中我们会读取这个文本文件,这里提前给出 @PostConstruct...
    99+
    2022-11-13
    SpringBoot过滤敏感词 SpringBoot 敏感词
  • 微信小程序实现搜索关键词高亮的示例代码
    1,前言 项目中碰到一个需求,搜索数据并且关键词要高亮显示,接到需求,马上开干。先上效果图。源码已经做成了小程序代码片段,放入了GitHub了,文章底部有源码链接。 2,思路 ...
    99+
    2022-11-12
  • Qt实现部件透明及阴影效果的示例代码
    目录透明效果情况一情况二情况三情况四阴影效果透明效果 情况一 //窗口整个透明属性,取值为0-1,0为全透明 setWindowOpacity(0.5); 情况二 //部件...
    99+
    2022-11-13
  • Qt实现绘制网格背景的示例代码
    目录现有功能运行结果源码window.hwindow.cppmain.cpp现有功能 使用滚轮缩放。缩放到达一定阈值后恢复网格大小。窗口大小调整时网格背景也自动调整重绘。 运行结果 ...
    99+
    2022-11-13
  • Qt实现字幕滚动效果的示例代码
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件五、效果演示一、项目介绍 利用QTimer实现字幕滚动功...
    99+
    2022-11-13
  • Qt实现数据导出到xls的示例代码
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 导入导出数据到csv由于语法简单,适用场景有限,于是乎还是必须再造一个轮子导出数据到xls,在经历过数十年的项目实...
    99+
    2022-11-12
  • Java实现英文猜词游戏的示例代码
    目录前言主要设计功能截图代码实现游戏启动类处理单词判断总结前言 《英文猜词游戏》代码行数没有超过200行,是之前为了背英语单词,特意研发的小游戏。 主要设计 1.事先准备单词文本。 ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作