如何根据内容显示不同的背景颜色?

参照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角色的返回数据:

 

 
 
 
 
 
 
C++
 
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
{
;
}
}
;
}
 

 

这样就可以自定义数据的背景色。

 

相关文章: