QCalendar造型。禁用项目的属性

时间:2015-06-18 12:40:45

标签: python c++ qt pyqt styling

在Qt中,特别是QCalendarWidget,默认情况下禁用(不可点击)日期具有灰色背景。但是,我需要使用QSS文件设置样式。

我的问题是我无法在Qt API中找到该属性。例如,用于选择的项目通常可以这样设置

QAbstractItemView {
    color:#444;
    alternate-background-color: #eee;
    selection-background-color: #0F4A8C;
    selection-color:#fff;
}

有任何建议我如何设置禁用项目的背景颜色?

2 个答案:

答案 0 :(得分:0)

这可能有用。

QAbstractItemView :disabled {
    color:#444;
    alternate-background-color: #eee;
    selection-background-color: #0F4A8C;
    selection-color:#fff;
}

另见http://doc.qt.io/qt-4.8/stylesheet-examples.html

答案 1 :(得分:0)

显然,对于超出范围的日期,您无法设置它们的样式,您需要覆盖QCalendar的paintCell(painter, rect, date)函数,如下所示:

class CustomCalendarWidget(QtGui.QCalendarWidget):
    """ Calendar widget which overwrites the out of date drawing """
    def paintCell(self, painter, rect, date):
        if not self.minimumDate() <= date <= self.maximumDate():
            painter.setBrush(QtGui.QBrush(Qt.lightGray))
            painter.setPen(QtGui.QPen(Qt.lightGray))
            painter.drawRect(rect)
            painter.setPen(QtGui.QPen(Qt.gray))
            painter.drawText(rect, Qt.AlignHCenter | Qt.AlignVCenter, str(date.day()))
        else:
            super(CustomCalendarWidget, self).paintCell(painter, rect, date)