-
Notifications
You must be signed in to change notification settings - Fork 84
Open
Description
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
Labels
No labels