Python PyQt4 QTableWidget 表头样式表未正常工作
我有一个 QTableWidget
,并且给它应用了一些样式表:
QTableWidget
{
border:2px groove #96A8A8;
border-radius:3px;
selection-background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #D7F4F7, stop: 0.4 #CEECF0,
stop: 0.6 #C5E4E8, stop: 1.0 #D7F4F7);
selection-color:black;
}
QTableWidget QHeaderView::section
{
border-bottom:0px groove #8BA6D9;
border-left:0px groove #8BA6D9;
border-right:2px groove #8BA6D9;
border-top:0px;
padding:5px;
background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #F8FCFE, stop: 0.4 #EBEEF2,
stop: 0.5 #E0E5EA, stop: 1.0 #DADEEA);
color:black;
outline:0px;
}
QTableWidget::item
{
padding:5px;
outline:0px;
}
这段CSS代码让我得到了想要的外观。不过,当我开始往表格里添加 TableWidgetItems
(超过15个项目/行)时,表格的标题装饰就消失了(也就是说,标题的样式又变回了默认的窗口样式),尽管表格其他的样式属性仍然有效。
这是什么原因呢?
顺便说一下,我还给表格应用了以下属性:
mytable.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
mytable.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
mytable.setSelectionMode(QtGui.QTableWidget.SingleSelection)
mytable.horizontalHeader().setStretchLastSection(True)
vheight = mytable.verticalHeader()
vheight.setDefaultSectionSize(50)
我在Windows XP SP3上使用的是Python 2.7.3
1 个回答
2
我不知道是什么原因导致了这个问题。不过,有一个解决办法可以让标题的装饰保持不变。你可以通过 设置应用程序的样式表 来实现,方法是使用 QApplication.setStyleSheet
,而不是单独为某个小部件设置样式表。
这样做会让所有的 QTableWidget 都使用相同的样式表,算是一个额外的好处,前提是你想要这样的效果。如果不想这样,你可以创建一个子类,并根据子类的小部件来设置样式表。