QTreeView样式表自定义问题与滚动条

问题描述:

在下面的屏幕截图中有两个QTreeViews。对于右边的那个,我添加了一个css自定义:QTreeView样式表自定义问题与滚动条

setStyleSheet(
    "background-color: #EAF5FF;" 
    "alternate-background-color: #D5EAFF;" 
); 

但是请注意,滚动条的外观已经改变。它转到了“windows”风格,而不是“windowsxp”风格(这是默认的,因为我是在Xp下开发的)。

如何使用上面的样式设置,而无需改变滚动条的外观?

我使用QT 4.5和Windows XP。

ScreenShot

要去的QPalette路线的建议制定。这里是解决方案:

#if 0 // this causes the problem 
    setStyleSheet(
     "background-color: #EAF5FF;" 
     "alternate-background-color: #D5EAFF;" 
    ); 
#else // this works correctly 
    QPalette p = palette(); 
    p.setColor(QPalette::Base, QColor(qRgb(0xEA, 0xF5, 0xFF))); 
    p.setColor(QPalette::AlternateBase, QColor(qRgb(0xD5, 0xEA, 0xFF))); 
    setPalette(p); 
#endif 

这两种方法应该根据文档工作,所以我会说它的Qt错误。

编辑:用这种新方法在过去几天的工作之后,我注意到有可能的性能提高。

你需要的CSS定制给你的能力之一,超出了可以直接做?为了改变颜色,你可以直接使用小部件的调色板,它应该保留你的风格。

另外请记住,风格的变化是继承的,所以如果包含在右边的树中的任何小部件有不同的风格不是包含在左边的树中的任何一个,可能导致的变化,以及。

除此之外,我会认为,这似乎是一个Qt的bug,如果确实是唯一的区别是在CSS样式表。