Q_UNUSED() 的作用 & qt5.6.3使用QPainter的drawText画不出中文
1、Q_UNUSED() 的作用
Q_UNUSED() 没有实质性的作用,用来避免编译器警告
int testFunc(int a, int b, int c)
{
int e;
return a+b+c;
}
//编译器会有警告 e未使用;
//于是
int testFunc(int a, int b, int c)
{
int e;
Q_UNUSED(e)
return a+b+c;
}
2、 qt5.6.3使用QPainter的drawText画不出中文
void Circle::paintEvent(QPaintEvent * event)
{
//Q_UNUSED()是用来在编译时忽略函数不用的形参,这样就不会黄色报警了,当然也可以不加,就会有黄色报警
Q_UNUSED(event);
QPainter painter(this);
//设置画笔颜色
painter.setPen(QColor(0, 160, 230));
//设置字体 微软雅黑 点大小50 斜体
QFont font;
font.setFamily("Microsoft YaHei");
font.setPointSize(50);
font.setItalic(true);
painter.setFont(font);
//绘制文本
//QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 这个版本的qt还没有setCodecForTr函数
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
painter.drawText(rect(), Qt::AlignCenter, QString("123中123文123"));
}
结果:
发现中文字都没有出来
解决1、
如果你用的是vs,那你还可以在文件最上面加上
#pragma execution_character_set("utf-8")
来解决
解决2、
把QString换成QStringLiteral
void Circle::paintEvent(QPaintEvent * event)
{
//Q_UNUSED()是用来在编译时忽略函数不用的形参,这样就不会黄色报警了,当然也可以不加,就会有黄色报警
Q_UNUSED(event);
QPainter painter(this);
//设置画笔颜色
painter.setPen(QColor(0, 160, 230));
//设置字体 微软雅黑 点大小50 斜体
QFont font;
font.setFamily("Microsoft YaHei");
font.setPointSize(50);
font.setItalic(true);
painter.setFont(font);
//绘制文本
//QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 这个版本的qt还没有setCodecForTr函数
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
painter.drawText(rect(), Qt::AlignCenter, QStringLiteral("123中123文123"));
}
//Qt5开始只剩下setCodecForLocale这一个了,只是影响Qt对toLocal8Bit相关函数的编码方式
// Qt默认会使用本机编码,所以对于中文系统,下面这句设置是多余的
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
/*
在Qt中,QString会用UTF-16编码存储,而qDebug()等I/O函数会以UTF-8编码处理。
其实转换后的字节流是正确的,只是显示时用了和字节流不同的编码方式处理导致乱码
所以当要在Qt中输入输出非UTF-8字符串时应该先转换一下
在源码中要写入非英文字符的话建议使用转义的方式,也就是上面“\xE4\xBD...”这种,这也是官方推荐的方式
*/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 趁着过年的时候手搓了一个低代码框架
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
2020-07-14 Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths
2020-07-14 Educational Codeforces Round 89 (Rated for Div. 2)D. Two Divisors 线性筛质因子