我有一个pyQt4应用程序,它使用“主题”。通过“主题”,我的意思是有一些用户可选择的style.qss样式表变体,必要时附带专用图形的png。
我最近使用了QtListView和QStandardItemModel,其中项目模型的组件设置为具有检查状态:
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 / model组合的一个属性,因为我在两个地方对两种不同类型的数据使用相同类型的组合,并且它们都以相同的方式显示这种效果(但它们在同一个父窗口小部件上)。
在“原生”主题中,当我将样式表设置为“”时,任何复选框都没有意外突出显示(在Fedora 19上)。
感觉它可能与悬停有关,但是当我将鼠标悬停在任何主题中的任意一个复选框上时,它们会以另一种颜色突出显示。我不知道从哪里开始调试这个突出显示效果,它只影响了一些主题中列表视图的前几个元素。据我所知,主题中没有任何内容可以为列表视图或复选框指定条件绘图指令。我认为这是一个我从未听说过的已知功能 - 它叫什么(所以我可以弄清楚如何调试它)?感谢。
编辑:这是一个例子。不幸的是,在这个例子中,我没有看到第一个元素的复选框用白色勾勒出来,但是第3到第6个。
#!/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_()