Qt关于设置字体的问题

QFont font("Times New Roman");
setFont(font);给当前窗口整体设置字体,但是显示在该窗口上的部分控件字体没有修改过来是怎么回事,指定了部件的父类是该窗口

【以下回答由 GPT 生成】

问题的原因是setFont()方法只能设置当前窗口的字体,而无法递归地设置所有子类控件的字体。为了解决这个问题,你可以使用递归的方式来设置所有子类控件的字体。

下面是一种可能的解决方案:

// 在你的窗口类中添加一个私有函数,用于递归设置子类控件的字体
void YourWindowClass::setAllWidgetsFont(QWidget* widget, const QFont& font) {
    // 设置当前控件的字体
    widget->setFont(font);

    // 遍历当前控件的所有子控件,并递归地设置它们的字体
    const QObjectList& children = widget->children();
    for (QObject* child : children) {
        QWidget* childWidget = qobject_cast<QWidget*>(child);
        if (childWidget) {
            setAllWidgetsFont(childWidget, font);
        }
    }
}

// 在构造函数或初始化函数中调用此函数,传入窗口的指针和希望设置的字体
QFont font("Times New Roman");
setAllWidgetsFont(this, font);

这样,setAllWidgetsFont()函数将会递归地设置所有子类控件的字体,使它们统一为"Times New Roman"。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

qss:
* {
    font:xxxx;
}