栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

lilydict百合词典编译记录

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lilydict百合词典编译记录

目录

一  编译结果

 二  代码研究

2.1  全部类管理方式

2.2  浮窗显示管理方式

2.3  字典管理方式

2.4   qml加载方式

2.5   网络通信管理方式

三  参考链接


一  编译结果

 

 

 

 二  代码研究

2.1  全部类管理方式
enum class ShowType{balloon,main};
enum class DictType{ShanbayDict,YoudaoDict};
namespace DICT{
    extern std::unique_ptr gui;
    extern std::unique_ptr app;
    extern std::unique_ptr shanbayDict;
    extern std::unique_ptr youdaoDict;
    extern std::unique_ptr cfg;
    extern Dictlogo* logo;
    extern ShowType showType;
    void init();
    void queryWord(const QString& word);
    void showWord(DictType dictType,const QString& wordinfo);
}

2.2  浮窗显示管理方式
void Application::run(){

    DICT::init();
    if(DICT::cfg->isStartloginshanbay()){
        DICT::gui->showLoginWin();
    }else{
        if(!DICT::cfg->isAutohide()){
            DICT::gui->showMainWin();
        }
    }
}

2.3  字典管理方式
    QObject::connect(DICT::cfg.get(),&Config::signalChange,
                     [&](const QString& key, const QVariant& value){
        if(key=="screentext"){
            getscreenwordAction->setChecked(value.toBool());
        }else if(key=="autospeak"){
            autospeakAction->setChecked(value.toBool());
            setScreenText();
        }else if(key=="selectedtext"){
            setScreenText();
        }else if(key=="clipboardtext"){
            setScreenText();
        }
    });

2.4   qml加载方式
//loginWin
void Gui::showLoginWin(){
    qDebug()<<"show loginwin";
    if(loginWin==nullptr){
        qDebug()<<"load loginwin";
        engine->load(QUrl(QStringLiteral("qrc:/qml/Login.qml")));
        loginWin = qobject_cast(engine->rootObjects().last());
        loginWin->setIcon(QIcon(":/img/logo.png"));

        //loginWin->setFlags(Qt::FramelessWindowHint);
        //qDebug()<objectName();
        QObject::connect(loginWin,SIGNAL(signalRegisterClick()),
                         this,SLOT(registerClick()));

        QObject::connect(loginWin, SIGNAL(signalLoginClick(QString,QString,QString)),
                         this, SIGNAL(signalLoginClick(QString,QString,QString)));
        QObject::connect(loginWin,SIGNAL(signalFreshCaptchaImg()),
                         this,SIGNAL(signalFreshCaptchaImg()));

        QObject::connect(this,SIGNAL(signalShowCaptchaImg(QVariant)),
                         loginWin,SLOT(showCaptchaImg(QVariant)));
        QObject::connect(this,SIGNAL(signalSetLoginWinState(QVariant)),
                         loginWin,SLOT(setState(QVariant)));
    }
    loginWin->show();

}

2.5   网络通信管理方式
void ShanbayDict::httpfinished(QNetworkReply* reply){
    if(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString().isEmpty()){
        qDebug()<readAll());
    }
    //qDebug()<readAll());
    //qDebug()<<"Http request finished!"<error()<errorString()<attribute(QNetworkRequest::HttpStatusCodeAttribute).toString()<url();
    QJsonDocument jsonDoc;
    QJsonObject jsonObj,vocObj,en_definitionsObj;
    QString html;
    QByteArray replData=reply->readAll();
    sessionid=getCookie("csrftoken");
    switch(httpAction){
    case HttpAction::NoAction:
        break;
    case HttpAction::GetSessionidAction:
        //sessionid=getCookie("csrftoken");//sessionid已经不在使用
        //qDebug()<<"sessionid="<state = NetState::login;
        html=QString::fromUtf8(replData);
        //qDebug()<-1){
            //                emit signalLoginFinished(false,"请输入正确的用户名或注册邮箱和密码");
            //            }else{
            //                emit signalLoginFinished(false,"验证码错误");
            //            }
        }
        break;
    case HttpAction::QueryWordAction:
        //qDebug()<<"query word";
        //jsondata=jsonParser->parse(reply->readAll(),&jsonok);
        //jsonDoc=QJsonDocument::fromJson(replData);
        emit signalRetWordinfo(QString::fromUtf8(replData));
        //        if(!jsonDoc.isNull()){
        //            // jsonObj=jsondata.toMap();
        //            jsonObj=jsonDoc.object();
        //            vocObj=jsonObj.value("voc").toObject();
        //            en_definitionsObj=vocObj.value("en_definitions").toObject();
        //            DICT::word->clear();
        //            DICT::word->name=vocObj.value("content").toString();
        //            DICT::word->learning_id=QString::number(jsonObj.value("learning_id").toDouble(),'g',15);
        //            DICT::word->definition=vocObj.value("definition").toString();
        //            DICT::word->pron=vocObj.value("pron").toString();
        //            DICT::word->audio=vocObj.value("audio").toString();
        //            //DICT::word->en_definitions="
"; // for(auto it=en_definitionsObj.constBegin();it!=en_definitionsObj.constEnd();it++){ // //qDebug()<en_definitions+=QString("
%1. ").arg(it.key()); // if(it.value().isArray()){ // foreach(QJsonValue jv,it.value().toArray()){ // DICT::word->en_definitions+=QString("%1; ").arg(jv.toString()); // } // } // DICT::word->en_definitions+="
"; // } // qDebug()<name) // .arg(DICT::word->learning_id) // .arg(DICT::word->definition) // .arg(DICT::word->pron) // .arg(DICT::word->audio) // .arg(DICT::word->en_definitions); // emit signalQueryFinished(); // //qDebug()<learning_id; // if(DICT::word->learning_id!="0"){ // queryExamples(DICT::word->learning_id); // } // //qDebug()<readAll()); // jsondata=jsonParser->parse(reply->readAll(),&jsonok); jsonDoc=QJsonDocument::fromJson(replData); if(!jsonDoc.isNull()){ jsonObj=jsonDoc.object(); //qDebug()<<"example_status"<examples.append(jv.toObject()); } // auto exmList=jsonObj.value("examples").toList(); // for(int i=0;iexamples.append(exmObj); // qDebug()<readAll()); // jsonDoc=QJsonDocument::fromJson(replData); // if(!jsonDoc.isNull()){ // jsonObj=jsonDoc.object(); // //qDebug()<<"jsonObj"<learning_id=QString::number(jsonObj.value("id").toDouble(),'g',15); // qDebug()<learning_id!="0"); // queryExamples(DICT::word->learning_id); // } //qDebug()<readAll()); break; default: // qDebug()<rawHeader("Content-Encoding");//gzip // qDebug()<readAll()); break; } }

三  参考链接

lilydict: 百合词典,是一个开源跨平台桌面版词典软件,使用C++开发,图形界面框架库Qt5 QML。 (gitee.com)

(23条消息) Qt高质量的开源项目合集_不熬夜的( ⊙ o ⊙ )猫的博客-CSDN博客_qt项目源码

Github上的一些高分Qt开源项目 - 简书 (jianshu.com)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号