我希望在每次更改(由应用程序内部生成)时以某种方式突出显示某些窗口控件以指示用户。
我找到了一个很好的方法:通过调色板和QVariantAnimation操作背景颜色。导致巨大问题的唯一小部件是QComboBox,因为它的背景颜色需要非常棘手的处理。唯一(!)平台无关且正确的更改方法是应用this hack并设置样式表的“background-color”属性。问题是从样式表中获取默认值,这是将颜色平滑地设置回初始状态所必需的。
有没有办法以“uni-widget”方式处理这个问题(更具体地说:QAbstractButton,QLineEdit,QComboBox,QSlider,QListView,QGroupBox)?也许有其他方法来动画小部件的高亮显示?
答案 0 :(得分:0)
我最终得出结论:在不破坏其默认/初始/非动画外观的情况下,无法为小部件添加动画效果。
因此,我使用background-color
样式表属性设置动画,使用调色板中特定于窗口小部件的颜色角色作为预期(!)初始颜色(在应用样式表之前在动画构造函数中选择它)。虽然我无法让QComboBox的QPalette::Base
颜色保持显示白色(它只在启动时显示白色,但它在某种程度上变为灰色,似乎是一个错误)在启用了Aero的Windows 7上,我对结果满意。 (也不需要申请this hack)
这是我的代码:http://pastebin.com/PDyS1Mn1