首页 > 解决方案 > Qt:根据状态更改字体:启用:禁用 CSS

问题描述

我有以下样式表的不同 QLabels。令人惊讶的是,当它们被禁用时,颜色会改变,但不会改变字体大小或字体粗细。字体始终是 QLabel 中定义的字体(无论标签是否启用)。有什么我错过的吗?

setStyleSheet(QString(
            "QLabel{"
            "    font-family: %1; "
            "    font-size: 16px; "
            "    font-weight: bold; "
            "    color: %3; "
            "}"
            "QLabel::!enabled {"
            "    font-size: 12px; "
            "    font-weight: normal; "
            "    color: %2; "
            "}").arg(fontFamilyName).arg(MEDIUM_GREY).arg(SUPER_DARK_GREY));

标签: cssqtfont-size

解决方案


我会从改变QLabel::!enabled开始QLabel:disabled。启用和禁用是伪状态,根据此处的文档,它们使用单​​冒号访问,而不是双冒号。

除此之外,您可能仍会遇到一些 Qt 样式表错误(无法确定,因为您没有提及您正在使用的 Qt 版本)。

如果更改后!enabled问题:disabled仍然存在,我建议尝试以下解决方法:

两种可能有效的解决方法是:

  1. !enabled部分也设置字体系列,虽然这看起来是多余的;
  2. 设置背景(例如background-color: transparent;

有关您可能面临的 Qt 样式表错误的更多详细信息,我建议在这里查看 Qt 错误跟踪器。


推荐阅读