1. 程式人生 > 其它 >Q_UNUSED() 的作用 & qt5.6.3使用QPainter的drawText畫不出中文

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")); }

結果:

發現中文字都沒有出來

解決:把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")); }