Pyqt4 pyQt和样式,listview小部件突出显示第一个复选框

Pyqt4 pyQt和样式,listview小部件突出显示第一个复选框,pyqt4,stylesheet,qlistview,Pyqt4,Stylesheet,Qlistview,我有一个pyQt4应用程序,它使用“主题”。所谓“主题”,我的意思是,style.qss样式表有用户可选择的变体,必要时附带png用于专门的图形 我最近使用了带有QStandardItemModel的QtListView,其中项目模型的组件被设置为具有检查状态: item = QtGui.QStandardItem( app ) item.setCheckState( False ) item.set

我有一个pyQt4应用程序,它使用“主题”。所谓“主题”,我的意思是,style.qss样式表有用户可选择的变体,必要时附带png用于专门的图形

我最近使用了带有QStandardItemModel的QtListView,其中项目模型的组件被设置为具有检查状态:

                item = QtGui.QStandardItem( app )
                item.setCheckState( False )
                item.setCheckable( True )
                self.model_apps.appendRow( item )

                [snip -- elsewhere in the code:]

                self.app_listview = QtGui.QListView()
                self.app_listview.setModel( self.model_apps )
我注意到,在我的一个主题中,listview中的前三项在复选框方框周围有一个白色的轮廓,但只有前三项。并不是复选框被选中或其他什么,而是复选框的矩形似乎是用白色轮廓画出来的。在另一个主题中,以这种方式绘制的是listview中的前四项。在另一个主题中,没有意外地突出显示任何复选框。我认为这是listview/模型组合的一个属性,因为我在两个地方对两种不同类型的数据使用了相同类型的组合,并且它们都以相同的方式显示了这种效果(但它们在相同的父窗口小部件上)

在“本机”主题中,当我将样式表设置为“”时,没有意外地突出显示任何复选框(在Fedora19上)

感觉它可能与悬停有关,但当我悬停在任何主题中的任何一个复选框上时,它们会以另一种颜色高亮显示。我不知道从哪里开始调试这种突出显示效果,它只影响listview的前几个元素中的一些主题。据我所知,主题中没有为列表视图或复选框指定条件绘图说明。我假设这是一个我从未听说过的已知特性-它叫什么(这样我就能知道如何调试它)?谢谢

编辑:下面是一个例子。不幸的是,在这个例子中,我没有看到第一个元素的复选框是白色的,而是第三个到第六个

#!/bin/env python
try :
    import urllib.request as urllib_request # python 3.0 ready
except:
    import urllib2 as urllib_request # python 2.x compatible
from PyQt4 import QtCore, QtGui
import sys
app = QtGui.QApplication( sys.argv )
stylesheet = urllib_request.urlopen( "http://www.yasinuludag.com/darkorange.stylesheet").read()
app.setStyleSheet( stylesheet )
main_window = QtGui.QMainWindow()
model = QtGui.QStandardItemModel()
for i in range(10):
    item = QtGui.QStandardItem( 'thing_%03d' % i )
    item.setCheckState( False )
    item.setCheckable( True )
    model.appendRow( item )
view = QtGui.QListView()
view.setModel(model)
main_window.setCentralWidget(view)
main_window.show()
app.exec_()

请编辑您的问题,使其包含一个复制问题的小型自包含示例。运行您的示例时,我无法复制问题。这可能是因为样式表覆盖了当前样式,因此确切的结果可能是不可预测的(对我来说,您可能在不同的平台上,或者使用不同的样式)。你必须通过反复试验来缩小问题的根源。只需注释掉样式表中的大块内容,直到问题消失,然后逐渐添加较小的部分,直到问题再次出现。确定具体的责任规则应该不会太难。