在运行时动态改变 QStyle?

Dynamically change QStyle at runtime?

我想在运行时调整现有样式,特别是 QStyle::PM_ToolBarIconSize。这可以做到吗?据我所知,你只能继承QStyle并覆盖pixelMetric()。

编辑 1:在 QStyle::PM_ToolBarIconSize 的特定情况下,我可以使用 QToolBar::setIconSize,但这只会为单个工具栏实例设置图标大小。我想更改底层样式提示以一举影响所有工具栏。 QStyle::PM_ToolBarIconSize 可能不是我想要调整的唯一样式,它只是我正在查看的第一个恰好具有 "change this instance's icon size" 功能的样式。

编辑2:我不能只创建一个新的样式子类,因为当前样式已经是基于样式表的自定义样式。有多种样式可供用户选择。我不想创建一堆新样式只是为了调整一些工具栏图标或菜单高度大小设置。

那为什么不覆盖 QStyle 呢?您的子类将 return 图标大小(通过 pixelMetric),这取决于您的 QStyle 的可设置参数。

由于 Qt 没有动态 QStyle 机制,最好用改变后的图标大小创建一个新的样式实例,然后将它设置到 QApplication,而不是改变当前样式。

这就是 QProxyStyle 的确切用途。