我希望一些窗口控件在每次更改(由应用程序内部生成)时以某种方式突出显示,以指示用户。
我发现了一个很好的方法:通过调色板和QVariantAnimation操作背景颜色。唯一造成巨大问题的小部件是QComboBox,因为它的背景颜色需要非常棘手的处理。唯一的(!)改变它与平台无关的正确方法是应用this hack并设置样式表的“背景颜色”属性。问题是从样式表中获取默认值,这是平滑地将颜色设置回初始状态所必需的。
有没有办法以“单部件”的方式处理这个问题(更具体地说: QAbstractButton、QLineEdit、QComboBox、QSlider、QListView、QGroupBox)?也许有其他方法可以让小部件的高亮显示动画化?
发布于 2013-10-22 19:14:09
我最后得出的结论是:在不破坏其默认/初始/非动画外观的情况下,向小部件添加动画效果是不可能的。
因此,我按照预期使用调色板中的小部件特定颜色角色,对background-color样式表属性进行了动画处理(!)初始颜色(在应用样式表之前,在动画构造函数中拾取它)。虽然我无法在启用了Aero的Windows7上设置QComboBox的QPalette::Base颜色以保持白色显示(它只在启动时显示白色,但后来不知何故变成了灰色,似乎是一个错误),但我对结果感到满意。(也不需要应用this hack)
下面是我的代码:http://pastebin.com/PDyS1Mn1
https://stackoverflow.com/questions/19463654
复制相似问题