http://qtdebug.com/qtbook-qss-calendar/
QCalendarWidget 是一个比较复杂的 widget,由几个 QToolButton, QSpinBox, QMenu, QTableView 等组成,Qt 的帮助文档里没有其 QSS 的相关文档,当要修改其样式的时候应该怎么办呢?
我们这里采用的方法是分析组成 QCalendarWidget 的 widget 的 className 和 objectName,然后 QSS 每个 widget,最终达到修改 QCalendarWidget 样式的目的。
|
|
使用函数 dumpStructure() 打印出 QCalendarWidget 的树形组成结构,输出如下:
|
|
分析上面输出的 objectName,不难得出它们对应的 widget 如下图所示:

知道了每个 widget 后,就可以像下面这样用 QSS 修改 QCalendarWidget 的样式了。
|
|
但是还有一些问题,QSS 对 QCalendar 里的 QHeaderView::section 和 QTableView::item 没有效果,看到有人说可以用 QPalette 修改其颜色和背景,如有兴趣的话可以自己试试。
虽然 QCalendarWidget 的 QSS 还有很多小问题,就不在继续往下说了,这里主要是抛砖引玉,提出一种方法解决复杂甚至未知 widget 的 QSS,根据这个思路,举一反三,在遇到相似问题的时候,大家应该都能有个方向了。
本文介绍了一种通过分析QCalendarWidget内部结构并利用QSS来定制样式的实用方法。通过打印组件树,确定各部件的objectName,进而针对性地设置样式。


5220

被折叠的 条评论
为什么被折叠?



