基于QT设计一个春联自动生成器
目录
- 1. 前言
- 2. 实现原理
- 3. 示例代码
- 3.1 获取春联接口
- 3.2 数据解析代码
- 3.3 token数据存储
1. 前言 春节是中国最隆重的传统节日,一到过年家家户户肯定是要贴春联;在春节前夕,会用大红纸张,加上浓墨书写祝福词语,在春节当天贴于门框两边,寓意着一年吉祥如意,还会将福字倒转贴于门上,有"福到临门"的意思。为了方便找到合适的春联句子,我这里就采用现成的自然语言处理接口实现了一个自动生成春联的软件,输入提示词就可以完成春联的生成,方便写春联时参考。
下面是实现的效果:
文章图片
文章图片
文章图片
小时候最期盼的日子就是过年,可以穿新衣服,吃平时吃不到的好吃的,吃完年夜饭一起看春晚,放鞭炮;现在生活水平逐渐提高,平时穿的吃的也不差,也没有很期待了,现在过年吃完饭大家都是盯着手机玩,感觉没有以前小时候那种感觉了。
2. 实现原理 软件是采用Qt框架设计,调用百度大脑的智能春联接口完成春联生成。
官网地址: https://ai.baidu.com/tech/nlp_apply
文章图片
HTTP请求方法: POST
请求地址:https://aip.baidubce.com/rpc/2.0/creation/v1/couplets
URL的参数:access_token 通过API Key和Secret Key获取的access_token
请求头Header:Content-Typeapplication/json?
请求参数
text春联主题的提示字符
index春联的索引. 默认是0,同一个提示符,多次获取时,这个索引+1就能访问后面的春联.?
返回参数解释
first春联上联:成7-9个字的上联
second春联下联:生成7-9个字的春联下联
center春联横批:生成4个字的春联横批
请求示例:
{ "text": "新水","index": 0}
返回的数据示例:
{"couplets" : {"first":"新春新水千山绿","second": "春色春风万户红","center": "喜迎新春"}}
3. 示例代码 下面列出主要的核心代码,可以直接贴到自己工程里就可以使用。
3.1 获取春联接口
//获取春联void Widget::get_CoupletText(QString terms,int index){function_select=1; QString requestUrl; QNetworkRequest request; ?//存放图片BASE64编码QString imgData; ?//打包请求参数赋值QJsonObject post_data; QJsonDocument document; ?//设置请求地址QUrl url; QByteArray post_param; ?//请求地址requestUrl = "https://aip.baidubce.com/rpc/2.0/creation/v1/couplets"; ?//设置数据提交格式request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); ?//设置请求参数:post_data.insert("text",terms); //字符串(限5字符数以内)即春联的主题post_data.insert("index",index); //int 整数 默认为数值为0,即第一幅春联。每换一次,数值加1即可,一定数量后会返回之前的春联结果。?//构造请求url.setUrl(requestUrl + "?access_token=" + Token); request.setUrl(url); ?document.setObject(post_data); post_param = document.toJson(QJsonDocument::Compact); ?//发送请求manager->post(request, post_param); }
3.2 数据解析代码
//解析反馈结果void Widget::replyFinished(QNetworkReply *reply){int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); ?//读取所有数据QByteArray replyData = https://www.it610.com/article/reply->readAll(); ?qDebug()<<"状态码:"setText(center); ?QString first_1="\n"; for(int i=0; i setText(first_1); ui->label_2->setText(second_1); ?qDebug()<<"上联:"< 【基于QT设计一个春联自动生成器】
3.3 token数据存储
/*功能: 保存数据到文件*/void Widget::SaveDataToFile(QString text){/*保存数据到文件,方便下次加载*/QString file; file=QCoreApplication::applicationDirPath()+"/"+ConfigFile; QFile filesrc(file); filesrc.open(QIODevice::WriteOnly); QDataStream out(&filesrc); out << text; //序列化写字符串filesrc.flush(); filesrc.close(); }??/*功能: 从文件读取数据*/QString Widget::ReadDataFile(void){//读取配置文件QString text,data; text=QCoreApplication::applicationDirPath()+"/"+ConfigFile; ?//判断文件是否存在if(QFile::exists(text)){QFile filenew(text); filenew.open(QIODevice::ReadOnly); QDataStream in(&filenew); // 从文件读取序列化数据in >> data; //提取写入的数据filenew.close(); }return data; //返回值读取的值}
以上就是基于QT设计一个春联自动生成器的详细内容,更多关于QT春联生成器的资料请关注脚本之家其它相关文章!
推荐阅读
- 懒癌患者基于 YCSB 构造 hudi upsert 数据集(上篇)
- 微服务|阿里P8架构师谈(Zookeeper的原理和架构设计,以及应用场景)
- opencv|基于深度学习的口罩识别与检测PyTorch实现
- 遥感图像处理|概述—基于机载LiDAR点云数据的建筑物轮廓提取
- 大数据|控制论,计算机设计和思想会议
- 设计模式|Java设计模式之简单工厂模式
- android|走穿java23种设计模式-2工厂方法模式详解
- java设计模式|java设计模式---抽象工厂模式
- #|一个辅助 VSCode 下开发 STM32 的脚本
- 基于UEFI引导的多操作系统和谐共存(借助rEFInd)