QT中文路径测试结果大全及方法&painter.drawText乱码问题
2016-10-25 12:16
483 查看
第一种:windows下最常用最有效,直接使用国标码
打开文件对话框中文路径测试j结果:OK总结:QT5.7 完全支持中文路径 中文文件名;编辑器编码 系统编码 随便换都没有问题 挨着测试GBK GB2312 GB18030 UTF-8 任意编码都可以加载中文路径并不是网上所言的那些方法。所以我们必须重新认识QT测试中发现QT输出路径有时不是可靠 ,可能会输出到以前打开的项目里,如果调试正常,而在自己工程目录下没有EXE文件,查看运行输出目录可以找到你的EXE文件跑到哪里了第二篇
第三部分 用宏强制解决乱码测试结果可以数据库乱码问题
举报
#include <QTextCodec>
.....
QString fileName = QFileDialog::getOpenFileName(this,QString("读取匹配原图"),QString("E:\\"),QString("*.jpg *.bmp *.png"));
if(fileName.isEmpty())
{
QMessageBox::warning(this,QString("warning"),QString("No image was selected!"));
return;
}
QTextCodec *code = QTextCodec::codecForName("gb2312");
std::string name = code->fromUnicode(fileName).data();验证失败方法二:QStringLiteral 这个函数QT5.7不认 失败方法三:直接使用
//设置ToolButton图像
// QString pathname="D://高度程序//image//1.png";
// QTextCodec *code = QTextCodec::codecForName("gb18030");
// std::string name = code->fromUnicode(pathname.toUtf8()).data(); // pathname 为QString的中文路径名
用下下面一句话可以解决问题 路径全部中文 包括文件名
QString fileName= QString::fromLocal8Bit("E:\\游戏动画\\兔子\\兔子2\\兔子.png");
// QTextCodec *code = QTextCodec:: codecForName("gb18030"); 这个不需要
SetBtnImage(m_pBtn1,fileName );
SetBtnImage(m_pBtn2,":/image/2.png");
SetBtnImage(m_pBtn3,":/image/3.png");
SetBtnImage(m_pBtn4,":/image/4.png");
SetBtnImage(m_pBtnAnima,":/image/animation.png");测试结果:OK
![](http://s4.51cto.com/wyfs02/M02/89/4A/wKiom1gO2vjyjWKWAADc9nHVk5Y814.jpg-wh_500x0-wm_3-wmp_4-s_755940644.jpg)
使用painter.drawText 出现乱 设置什么方式都不行 最后在关闭源文件,用用记事本打开保存为UTF_8 重新打开工程 不需要什么转换 中文显示正常
QTextCodec *code = QTextCodec::codecForName("gb2312");
QRadialGradient radialGradient1(QPointF(200, 190), 50, QPointF(275, 200));
//2. 插入颜色
radialGradient1.setColorAt(0, QColor(255, 255, 100, 150));
radialGradient1.setColorAt(1, QColor(0, 0, 255, 50));
//3. 设置区域外的扩散方式
radialGradient1.setSpread(QGradient::RepeatSpread);
//4. 使用渐变作为画刷
painter.setBrush(radialGradient);
//5. 开画
painter.drawEllipse(QPointF(200, 190), 50, 50);
//-------------------
int x = this->width()-20;
QString text="电流值";
int length=text.toLocal8Bit().length();
int y = ( this->height()/ 2);
painter.rotate(90);
painter.drawText(y-30, -x, text);
painter.rotate(180);
painter.drawText(-y-6, 20, "电压值");
![](http://s2.51cto.com/wyfs02/M01/89/55/wKiom1gQA6WSO4xvAACgeLfHw0E417.jpg-wh_500x0-wm_3-wmp_4-s_3967866765.jpg)
1. [代码][C/C++/Objective-C]代码
?2. [代码]三、在Qt程序main函数中app后面开头处加入下面两句,加上这两个是省得不必要的麻烦。
?3. [代码]四、在Qt数据库连接后,运行SET NAMES 'GBK'语句
?4. [代码]如果你要直接通过SQL语句修改数据,则需要正确的把输入的内容转变为GB码中
?相关文章推荐
- Android Canvas DrawText中文乱码问题。
- 某些开发版中的Qt Designer菜单等中文显示为乱码问题解决方法初探
- qt5.6 中文字体显示乱码问题解决方法
- QT学习——qt creator修改程序编码(解决中文乱码问题)的方法
- QT 5.9版本 使用MSVC2015编译时出现中文字符乱码问题的解决方法
- QT中一种中文乱码问题的解决方法
- Tomcat中文乱码问题的原理和解决方法
- Tomcat中文乱码问题的原理和解决方法
- JSP中文乱码问题解决方法小结
- JSP中文乱码问题解决方法小结
- JSP中文乱码问题解决方法小结(转)
- php读mysql中文乱码问题解决方法
- URL中文参数乱码问题解决方法!
- Apache 2乱码问题解决方法--转载中文php网
- 解决中文乱码问题的超值方法
- jsp存取mysql中文数据结果为乱码的解决方法(未经验证)
- Tomcat5+Mysql中文乱码问题的解决方法
- Ajax中文乱码问题解决方法(服务器端用servlet)
- Tomcat中文乱码问题的原理和解决方法
- JPS 中文乱码问题的解决方法