【问题标题】:How to display special characters in QT 5?如何在 QT 5 中显示特殊字符?
【发布时间】:2019-10-14 02:48:47
【问题描述】:

摘自我的代码:

  char msg[80];
  sprintf(msg, "Chuck Temperature: %.1f °C", temperature);
  ui.TemperatureLabel->setText(QString::fromUtf8(msg));

我得到了什么:

什么不起作用:

  • 将度数符号 (°) 替换为 °同时将 textFormat 设置为 RichText。它显示为“卡盘温度:°C”。

  • 添加 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); 根本没有帮助。

我在 Visual C++ 下工作,如果这很重要的话。

【问题讨论】:

  • 您确定您的源文件是 UTF-8 编码的吗?您确定您的编译器支持 UTF-8 编码的源文件吗?建议在 ""u8 字符串中使用通用字符名称,以将这些变量排除在等式之外。
  • 如何在""u8字符串中使用通用字符名?
  • 点赞"This is a degree character \u00B0"u8
  • 你的输出字体支持那个码位吗?
  • @n.m. - 这没有帮助

标签: c++ visual-studio utf-8 qt5


【解决方案1】:

改用QString 怎么样?它会为您处理特殊字符。

如果我理解您的代码,您想更新 QLabel 的文本。

你可以这样做:

QString msg("Chuck Temperature: " + QString::number(temperature) + " °C");
ui.TemperatureLabel->setText(msg);

请注意,您可以在QString::number() 中指定所需的精度。 Here 你可以看看怎么做。
如果你想像%.1f 一样格式化温度,只需写下以下内容:

QString msg("Chuck Temperature: " + QString::number(temperature, 'g', 2) + " °C");
ui.TemperatureLabel->setText(msg);

希望它能解决你的问题。

【讨论】:

  • 唉,没用。
  • @user31264 我不明白你做了什么,因为它对我来说很成功。也许是您的文件没有正确的编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
相关资源
最近更新 更多