【问题标题】:QMenu font size for different DPI for windowsWindows 不同 DPI 的 QMenu 字体大小
【发布时间】:2021-10-18 09:36:52
【问题描述】:

我尝试自定义QWidgetAction。这很好用。 但是...在具有不同 DPI 的窗口上,菜单中的字体会以不明显的方式发生变化。

  • 100% -> pointSize = 8
  • 125% -> pointSize = 9
  • 150% -> pointSize = 9

(所以我无法拟合一些线性函数)。

我正在通过 Qt 源查找设置字体大小的位置,但没有运气(到目前为止)。

也许有人可以指出我根据 DPI 设置字体大小的地方? (这样我就可以对我的自定义小部件使用相同的计算。

谢谢各位。

【问题讨论】:

    标签: qt window dpi qmenu


    【解决方案1】:

    ma​​in.cpp 中添加 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 并再次检查,我认为这将解决您的问题。

    另外,this doc 解释了更多。

    已编辑:

    要将字体设置为QLabel,您可以通过两种方式进行:

    1. 从 GUI 中,可以从这里更改 GUI 中所有小部件的字体:

    1. 创建QFont 对象并为其添加相同的菜单字体,然后使用QLabel 的setFont 函数添加它。
        QFont font;
        font.setPointSize(9);
        label->setFont(font);
    

    Qt 中所有小部件和 QMenu 的默认字体大小为 11。

    【讨论】:

    • 谢谢,我很惊讶它还没有在项目中使用。但这似乎并不能解决问题。因为我需要知道在创建 QLabel 时菜单中将使用什么字体大小。菜单中的自定义小部件包括 QLabel。我需要 QLabel 具有与菜单相同的字体。该怎么做?
    • 编辑后:当然,这些都是很明显的事情。但是如何知道 QMenu 在动态创建 QLabel 时绘制(上下文)菜单时将使用的字体?你的建议很明显,没有回答问题。
    • 所以我不明白你到底想要什么。添加您的项目或创建一个示例。
    • 我想知道 QMenu 在它的绘制事件之前将使用什么字体大小。
    • 您应该能够使用QAction::font 获取与菜单操作关联的字体。
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多