您的位置:首页 > 编程语言 > Qt开发

QT中文路径测试结果大全及方法&painter.drawText乱码问题

2016-10-25 12:16 483 查看
第一种:windows下最常用最有效,直接使用国标码
#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打开文件对话框中文路径测试j结果:OK总结:QT5.7 完全支持中文路径 中文文件名;编辑器编码 系统编码 随便换都没有问题 挨着测试GBK GB2312 GB18030 UTF-8 任意编码都可以加载中文路径并不是网上所言的那些方法。所以我们必须重新认识QT测试中发现QT输出路径有时不是可靠 ,可能会输出到以前打开的项目里,如果调试正常,而在自己工程目录下没有EXE文件,查看运行输出目录可以找到你的EXE文件跑到哪里了第二篇
使用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, "电压值");
第三部分 用宏强制解决乱码测试结果可以数据库乱码问题

1. [代码][C/C++/Objective-C]代码

?

2. [代码]三、在Qt程序main函数中app后面开头处加入下面两句,加上这两个是省得不必要的麻烦。

?

3. [代码]四、在Qt数据库连接后,运行SET NAMES 'GBK'语句

?

4. [代码]如果你要直接通过SQL语句修改数据,则需要正确的把输入的内容转变为GB码中

?
举报
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  QT 文路