QT 格式化字符串功能
2016-03-17 19:33
543 查看
直接想到使用 sprintf(),写出如下的代码:
编译直接报错,错误信息如下:
不支持 QString 的 sprintf, 使用起来最是不方便!
QString 转 char * 还是比较麻烦的:
先将 QString 转换为 QByteArray,再将 QByteArray 转换为 char *。
注意:不能用下面的转换形式 char *mm = str.toLatin1().data(); 。因为这样的话,str.toLatin1() 得到的 QByteArray 类型结果就不能保存,最后转换,mm 的值就为空。
示例:
这样就完成了 QString 向 char * 的转化。经测试程序运行时不会出现 Bug。
注意第三行,一定要加上,不可以 str.toLatin1().data() 这样一部完成,可能会出错。
所以上述代码最后修改为:
或者,使用 arg 方法:
在 QT 中,建议使用后面方法,即 arg() 的方法。
void MainWindow::formatSerInfo(void) { QString strTest("Tst"); QString strSerInfo; strSerInfo.sprintf("%s %d",strTest,m_baudRateCur); hintSerSts->setText(strSerInfo); }
编译直接报错,错误信息如下:
C:\Qt\QtPrj\SerialAssist\mainwindow.cpp:427: error: cannot pass objects of non-trivially-copyable type 'class QString' through '...' strSerInfo.sprintf("%s %d",strTest,m_baudRateCur); C:\Qt\QtPrj\SerialAssist\mainwindow.cpp:427: warning: format '%s' expects argument of type 'char*', but argument 3 has type 'QString' [-Wformat=]
不支持 QString 的 sprintf, 使用起来最是不方便!
QString 转 char * 还是比较麻烦的:
先将 QString 转换为 QByteArray,再将 QByteArray 转换为 char *。
注意:不能用下面的转换形式 char *mm = str.toLatin1().data(); 。因为这样的话,str.toLatin1() 得到的 QByteArray 类型结果就不能保存,最后转换,mm 的值就为空。
示例:
Qstring str; char *ch; QByteArray ba = str.toLatin1(); ch = ba.data();
这样就完成了 QString 向 char * 的转化。经测试程序运行时不会出现 Bug。
注意第三行,一定要加上,不可以 str.toLatin1().data() 这样一部完成,可能会出错。
所以上述代码最后修改为:
void MainWindow::formatSerInfo(void) { QString strTest("Tst"); QString strSerInfo; QByteArray baTmp = strTest.toLatin1(); strSerInfo.sprintf("%s %d",baTmp.data(),m_baudRateCur); hintSerSts->setText(strSerInfo); }
或者,使用 arg 方法:
void MainWindow::formatSerInfo(void) { QString strTest("Tst"); QString strSerInfo; strSerInfo = QString("%1 %2").arg(strTest).arg(m_baudRateCur); hintSerSts->setText(strSerInfo); }
在 QT 中,建议使用后面方法,即 arg() 的方法。
相关文章推荐
- qt中文乱码问题
- Qt在Windows下的三种编程环境搭建
- Qt学习之QSplitter分割窗口
- Qt串口通信接收数据不完整的解决方法
- Qt 错误总结
- Qt5.0解析JSON
- QML中的state 状态
- QT连接多种数据库f方法及测试
- Qt for Windows:Qt 5.6.0 MinGW 静态编译版本制作
- QT中的QPainter类
- vs2013+Qt5.5.1+opencv2.4.11配置
- Qt使用教程之指定编辑器设置
- Kithara RTS进程与Qt应用程序间通信(共享内存)
- mac qt 注意事项
- [Qt]Problem:the Qt platform plugin "windows"
- QT的Paint 系统
- Qt Model View 框架
- QT---Winsocket获取网关(Gateway) 主机IP等信息
- qt Qcompleter自动补全类
- [NSIS]NSIS——Qt程序发布工具