问:如何为不可编辑的QComboBox的高亮设置制作动画?

时间:2013-10-19 07:36:36

标签: qt animation qwidget qcombobox qtstylesheets

我希望在每次更改(由应用程序内部生成)时以某种方式突出显示某些窗口控件以指示用户。

我找到了一个很好的方法:通过调色板和QVariantAnimation操作背景颜色。导致巨大问题的唯一小部件是QComboBox,因为它的背景颜色需要非常棘手的处理。唯一(!)平台无关且正确的更改方法是应用this hack并设置样式表的“background-color”属性。问题是从样式表中获取默认值,这是将颜色平滑地设置回初始状态所必需的。

有没有办法以“uni-widget”方式处理这个问题(更具体地说:QAbstractButton,QLineEdit,QComboBox,QSlider,QListView,QGroupBox)?也许有其他方法来动画小部件的高亮显示?

1 个答案:

答案 0 :(得分:0)

我最终得出结论:在不破坏其默认/初始/非动画外观的情况下,无法为小部件添加动画效果。

因此,我使用background-color样式表属性设置动画,使用调色板中特定于窗口小部件的颜色角色作为预期(!)初始颜色(在应用样式表之前在动画构造函数中选择它)。虽然我无法让QComboBox的QPalette::Base颜色保持显示白色(它只在启动时显示白色,但它在某种程度上变为灰色,似乎是一个错误)在启用了Aero的Windows 7上,我对结果满意。 (也不需要申请this hack

这是我的代码:http://pastebin.com/PDyS1Mn1