Q_UNUSED() 的作用 & qt5.6.3使用QPainter的drawText畫不出中文
阿新 • • 發佈:2021-07-14
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"));
}
結果:
發現中文字都沒有出來
解決:把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"));
}