我想在运行时调整现有样式,特别是QStyle::PM_ToolBarIconSize。这能做到吗?据我所知,您只能继承QStyle并覆盖pixelMetric((。
编辑1:在QStyle::PM_ToolBarIconSize的特定情况下,我可以使用QToolBar::setIconSize,但这将仅为单个工具栏实例设置图标大小。我想改变底层的样式提示,一下子影响到所有的工具栏。Q样式::PM_ToolBarIconSize可能不是我想调整的唯一样式,它只是我看到的第一个恰好有"更改此实例的图标大小"功能的样式。
编辑2:我不能只创建一个新的样式子类,因为当前样式已经是基于样式表的自定义样式了。用户可以选择几种样式。我不想创建一堆新样式,只是为了调整几个工具栏图标或菜单高度大小设置。
这就是QProxyStyle的确切用途。
为什么不重写QStyle?您的子类将返回一个图标大小(通过pixelMetric(,该大小取决于您的QStyle的可设置参数。
由于Qt没有动态的QStyle机制,因此最好使用更改后的图标大小创建一个新的样式实例,然后将其设置为QApplication,而不是更改当前样式。