QT开发中文网

Qt C++ 加载 PingFang-Regular.ttf字体路径 对某一个UI类中的所有部件批量 设置

要对特定的UI类中的所有部件批量设置字体,可以按照以下步骤进行操作:

  1. 在Qt Designer中设计你的UI界面,并为每个需要设置字体的部件指定一个唯一的objectName。

  2. 在你的UI类头文件(例如:widget.h)中添加以下代码:

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    void setFontsForAllWidgets(QWidget *widget);

};
  1. 在你的UI类源文件(例如:widget.cpp)中实现setFontsForAllWidgets()函数:
#include "widget.h"
#include <QFontDatabase>
#include <QApplication>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    // UI初始化代码
}

Widget::~Widget()
{
    // 清理代码
}

void Widget::setFontsForAllWidgets(QWidget *widget)
{
    if (!widget) {
        return;
    }

    QFont font;
    
    // 加载本地字体文件
    int fontId = QFontDatabase::addApplicationFont("path/to/PingFang-Regular.ttf");
    
    // 获取字体家族名称
    QStringList fontFamilyList = QFontDatabase::applicationFontFamilies(fontId);
    
   if (!fontFamilyList.isEmpty()) {
        QString fontFamily = fontFamilyList.first();
        
        // 设置自定义字体
        font.setFamily(fontFamily);
        
        widget->setFont(font);
        
        Q_FOREACH (QObject *child, widget->children()) {
            if (QWidget *childWidget = qobject_cast<QWidget*>(child)) {
                setFontsForAllWidgets(childWidget);  // 递归调用设置子部件字体
            }
        }
    }
}
  1. 在你的UI类源文件中,通过重写showEvent()函数来设置字体:
void Widget::showEvent(QShowEvent *event)
{
    QWidget::showEvent(event);
    
    setFontsForAllWidgets(this);  // 设置字体为PingFang-Regular.ttf
}

确保替换”path/to/PingFang-Regular.ttf”为实际的字体文件路径。

通过以上步骤,你就可以在特定的UI类中加载PingFang-Regular.ttf字体并批量设置所有部件的字体了。当该UI界面显示时,会自动调用showEvent()函数,并递归地对所有子部件进行字体设置。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=9962

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?