在运行时动态更改QStyle?

时间:2015-07-06 20:58:37

标签: qt qstyle

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这是QProxyStyle的确切目的。