Python PyQt4 QTableWidget标题样式表不能正常工作

时间:2014-04-15 02:41:03

标签: python pyqt pyqt4 stylesheet 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 个答案:

答案 0 :(得分:2)

我不知道造成这种行为的原因。但是,有一个工作可以让标题装饰坚持下去。您可以通过QApplication.setStyleSheet设置应用程序的样式表,而不是为窗口小部件设置样式表。

这会将所有QTableWidgets设置为相同的样式表,作为奖励,假设您想要这种效果。如果没有,您可以根据子类化小部件子类化和设置样式表。