饭后大无畏 2022-03-25 17:04 采纳率: 0%
浏览 12

请问如何实现程序的字体可调节功能?——平台 :qt4 linux

最近在做一个项目,需要能够调节界面的字体大小。
因为一个程序里有很多大小不一样的文字,所以无法通过 QApplication::setFont() 来实现。

尝试过应用自定义QStyle来调节字体大小,但是这种方式似乎只能在没有使用qss的情况下才能使用。

mStyle::mStyle(float i) :
    QProxyStyle(/*QStyleFactory::create("fusion")*/)
{
    m_i = i;
}
void mStyle::polish(QWidget *widget)
{
    if (/*qobject_cast<QPushButton *>(widget)
            || qobject_cast<QComboBox *>(widget)
            || qobject_cast<QLineEdit *>(widget)
            || */qobject_cast<QLabel *>(widget)){
        QLabel * lb = qobject_cast<QLabel *>(widget);
        if(lb->objectName() == "settings"){
        QFont f = lb->font();
            qDebug()<<"polish"<<lb->text()<<f.pointSizeF()<<m_i;
        f.setPointSizeF(f.pointSizeF()*m_i);
        lb->setFont(f);//  如果程序应用了qss的话,这里的调用就不生效
        qDebug()<<"polish"<<lb->font().pointSizeF();
        }
        //widget->setAttribute(Qt::WA_Hover, true);
    }
}

我想尝试不用qss,直接用自定义QStyle来实现样式设计,可是对QStyle这个功能了解的实在是少,只能勉强该一改前景色背景色等等,类似边框、伪状态(如QPushButton的checked状态),或这要设置按钮的背景图片等等,都不懂。

希望指教一下要通过什么方式来实现字体调节这个功能,谢谢!

  • 写回答

1条回答 默认 最新

  • 加油吧,小杜 2022-03-26 13:37
    关注

    改变字体的方式很多种,你是想要动态的改变字体大小。
    可以定义按钮来实现这个功能,
    通过qss实现:setStyleSheet("font:15pt");
    通过font实现
    QFont font;
    font.setPixelSize(15);

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日

悬赏问题

  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。
  • ¥15 孟德尔随机化结果不一致