2026.01.04随笔:实习第十天(开工大吉,依旧牛马)
2026.1.4随笔:实习第十天(开工大吉,依旧牛马) 上午把我做的之前的函数接口提交了,mentor看了说有一些要改的,大概意思就是函数写的太长了,而且逻辑不够优雅,然后就把函数解耦了一下,逻辑优化了一下
下午主要是和mentor开了个会对了一下需求,然后mentor给我说新建一个结构树节点边界条件,添加一个按钮导入文件,自定义把模型文件拷贝到工作目录
我写出来一版后,mentor说不需要使用Qt原生的文件选择框,然后给我看了一个使用封装好的文件选择的样例,然后我照着那个样例改了一下整个的逻辑然后跑通了
小tips: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 QTextStream out (&file) ;out.setCodec ("UTF-8" ); out << "*MEDIUM_DNSTY\n" ; out << QString::number (m_pAcousticMP->getMediumDnsty ()) << "\n" ; out << "*SOUND_SPEED\n" ; out << QString::number (m_pAcousticMP->getSoundSpeed ()) << "\n" ; out << "*SOURCE\n" ; out << QString::number (sourceType) << "\n" ; if (sourceType == 1 ) { out << "*NFLX\n" << QString::number (m_pIncidentSS->getNFLX ()) << "\n" ; out << "*FLXV\n" << QString::number (m_pIncidentSS->getFLXV ()) << "\n" ; } out << "*FREQ_STRT\n" << QString::number (m_pCalcFreq->getFreqStart ()) << "d0\n" << "*FREQ_END\n" << QString::number (m_pCalcFreq->getFreqEnd ()) << "d0\n" << "*FREQ_STEP\n" << QString::number (m_pCalcFreq->getFreqStep ()) << "d0\n" ; file.close ();
将上面的代码改成下面的,除了添加函数封装,在写入out的时候没有QString::number()函数做中间处理这样写是可以的。因为QTextStream对<<运算符做了重载
1 2 3 QTextStream& operator <<(int ); QTextStream& operator <<(double ); QTextStream& operator <<(float );
所以这两者是完全等价的,Qt还是要比标准C++方便一些。
只有在你需要“控制格式”时 才会遇到QString::number()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 bool ACFEADataManager::writeSolverFile (const QString& filePath, int sourceType) { QFile file (filePath) ; if (!file.open (QIODevice::WriteOnly | QIODevice::Text)) { qWarning () << "Unable to open" << filePath << "for writing." ; return false ; } QTextStream out (&file) ; out.setCodec ("UTF-8" ); out << "*MEDIUM_DNSTY\n" << m_pAcousticMP->getMediumDnsty () << "\n" << "*SOUND_SPEED\n" << m_pAcousticMP->getSoundSpeed () << "\n" << "*SOURCE\n" << sourceType << "\n" ; if (sourceType == 1 ) { out << "*NFLX\n" << m_pIncidentSS->getNFLX () << "\n" << "*FLXV\n" << m_pIncidentSS->getFLXV () << "\n" ; } out << "*FREQ_STRT\n" << m_pCalcFreq->getFreqStart () << "d0\n" << "*FREQ_END\n" << m_pCalcFreq->getFreqEnd () << "d0\n" << "*FREQ_STEP\n" << m_pCalcFreq->getFreqStep () << "d0\n" ; return true ; }