Skip to content

Conversation

@KnCRJVirX
Copy link
Collaborator

由于Qt5在2023年5月26日已终止支持,LTS版本也于2025年5月26日终止支持,将该项目迁移到Qt6以便于后续的开发和使用

迁移到Qt6后,由于一些旧特性的移除和变化,对代码作了以下修改:

  • Qt5中的<QRegExpValidator>模块在Qt6中被移除,已改用<QRegularExpressionValidator>
  • Qt6移除了qsrand qrand等随机数函数,为尽量减少修改,改用了C语言的srand rand
  • Qt6移除了QTime::start(),程序中的计时改用QElapsedTimer实现
  • 原来的退出函数:
#define qApp (static_cast<QApplication *>(QCoreApplication::instance()))

void MainWindow::QuitDrcom()
{
    // 退出之前恢复重试计数
    // QSettings s(SETTINGS_FILE_NAME, QSettings::IniFormat);
    // s.setValue(ID_RESTART_TIMES, 0);
    qDebug() << "reset restartTimes";
    qDebug() << "QuitDrcom";

    // TODO : release socket
    bQuit=true;
    if(CURR_STATE==STATE_ONLINE)
        dogcomController->LogOut();
    else if(CURR_STATE==STATE_OFFLINE)
        qApp->quit();
    else if(CURR_STATE==STATE_LOGGING)
        ;// 正在登录时候退出,假装没看到,不理

    // qApp->quit()调用放到了注销响应那块
}

其中的qApp->quit();在Qt6会导致递归调用,现改用QTimer::singleShot(0, qApp, SLOT(quit()));延迟退出解决此问题

以下是由于旧函数弃用导致的编译时警告,也进行了修改:

  • Qt6中已默认开启了高分辨率支持,Qt::AA_EnableHighDpiScaling属性已弃用
  • Qt6弃用了QCryptographicHash::addData(const char* data, qsizetype length),现将长度删除,不传入参数,字符串常量将直接作为QByteArray处理
  • qCheckSum函数参数列表变化,现将传入的参数先构造为QByteArrayView

现在,你可以自行通过Qt6编译该项目,或由于原作者已长期不维护该项目,你可以选择前往我的分支 https://github.com/KnCRJVirX/drcom-jlu-qt/ 体验新的特性(可选不弹出校园网之窗、密码加密存储等)

@code4lala
Copy link
Owner

你太棒啦🎉🎉🎉

@code4lala code4lala merged commit cdac8dc into code4lala:master May 26, 2025
@KnCRJVirX
Copy link
Collaborator Author

你太棒啦🎉🎉🎉

谢谢老学长😘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants