如何根据内容显示不同的背景颜色?
参照ECMWF的Metview源码实现。
Qt的Model中不同类型的数据用role区分,Qt的宏ItemDataRole提供了一些角色:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
{
,
,
,
,
,
,
// Metadata
,
,
,
,
,
,
,
// Accessibility
,
,
// More general purpose
,
,
// Internal UiLib roles. Start worrying when public roles go that high.
,
,
,
,
,
// Reserved
32
;
|
也可以自定义角色,只要数值大于UserRole即可。
|
1
2
3
4
5
6
|
{
,
200
;
|
Qt的Model使用data函数、setData函数来获取和设置各种角色的具体数值。当我们需要修改背景颜色时,可以修改BackgroundColorRole角色的返回数据:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
const
{
)
{
// 每行颜色均相同
;
)
{
)
;
else
;
}
else
{
;
}
}
;
}
|
这样就可以自定义数据的背景色。