Skip to content

Chapt3: 话题通信实践,WSL2 ubuntu22 环境下系统状态实时显示汉字不能正常显示 #8

@kyrie2to11

Description

@kyrie2to11

Chapt3: 话题通信实践 - WSL2 Ubuntu22 环境下中文显示问题解决方案

问题描述:在 WSL2 Ubuntu22 环境下运行系统状态实时显示程序时,汉字无法正常显示。


解决方案

1. 系统默认未安装中文字体需要手动安装

sudo apt update && sudo apt install -y fonts-wqy-microhei fonts-wqy-zenhei
字体包 说明
fonts-wqy-microhei 文泉驿微米黑(推荐使用)
fonts-wqy-zenhei 文泉驿正黑

2. 代码修改

SysStatusDisplay 类的构造函数中添加字体设置:

class SysStatusDisplay : public rclcpp::Node {
 public:
  SysStatusDisplay() : Node("sys_status_display") {
    subscription_ = this->create_subscription<SystemStatus>(
        "sys_status", 10, [&](const SystemStatus::SharedPtr msg) -> void {
          label_->setText(get_qstr_from_msg(msg));
        });

    // 创建一个空的 SystemStatus 对象,转化成 QString 进行显示
    label_ = new QLabel(get_qstr_from_msg(std::make_shared<SystemStatus>()));

    // 设置支持中文的字体
    QFont font;
    font.setFamily("WenQuanYi Micro Hei");  // 使用文泉驿微米黑字体
    font.setPointSize(12);
    label_->setFont(font);

    label_->show();
  }
};

关键修改说明

修改项 说明
font.setFamily("WenQuanYi Micro Hei") 指定使用支持中文的字体
font.setPointSize(12) 设置字体大小为 12pt
label_->setFont(font) 将字体应用到 QLabel 控件

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions