欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决QTableWidget不显示数据的问题

程序员文章站 2022-04-29 16:38:31
QTableWidget通常用于数据的展示,通过其表格布局可以让用户更清晰的查看数据,同时也让数据的筛选变得更加直观。 不过,初学者们和粗心大意的人总是会发现明明自己数据已经正常添加,可是程序运行之后却看不到QTableWidget上有任何一点数据,一片空白。 这是怎么回事呢?我们先看一个可以复现这 ......

qtablewidget通常用于数据的展示,通过其表格布局可以让用户更清晰的查看数据,同时也让数据的筛选变得更加直观。

不过,初学者们和粗心大意的人总是会发现明明自己数据已经正常添加,可是程序运行之后却看不到qtablewidget上有任何一点数据,一片空白。

这是怎么回事呢?我们先看一个可以复现这个问题的代码:

解决QTableWidget不显示数据的问题
 1 func main() {
 2     widgets.newqapplication(len(os.args), os.args)
 3 
 4     table := widgets.newqtablewidget(nil)
 5     table.setcolumncount(3)
 6     table.sethorizontalheaderlabels([]string{"编号", "姓名", "年龄"})
 7     // 去除边框
 8     table.setshowgrid(false)
 9 
10     // 设置数据
11     num1 := widgets.newqtablewidgetitem2("0", 0)
12     name1 := widgets.newqtablewidgetitem2("anmi", 0)
13     age1 := widgets.newqtablewidgetitem2("20", 0)
14     table.setitem(0, 0, num1)
15     table.setitem(0, 1, name1)
16     table.setitem(0, 2, age1)
17 
18     num2 := widgets.newqtablewidgetitem2("1", 0)
19     name2 := widgets.newqtablewidgetitem2("terra", 0)
20     age2 := widgets.newqtablewidgetitem2("24", 0)
21     table.setitem(1, 0, num2)
22     table.setitem(1, 1, name2)
23     table.setitem(1, 2, age2)
24 
25     table.setwindowtitle("qtablewidget")
26     table.show()
27 
28     widgets.qapplication_exec()
29 }
导致数据无法显示的代码

这是它的效果:

解决QTableWidget不显示数据的问题

没错,表头正常显示了,然而数据却不见了!

我们再来看一下修复后的代码:

解决QTableWidget不显示数据的问题
 1 func main() {
 2     widgets.newqapplication(len(os.args), os.args)
 3 
 4     table := widgets.newqtablewidget(nil)
 5     table.setcolumncount(3)
 6     table.setrowcount(2)
 7     table.sethorizontalheaderlabels([]string{"编号", "姓名", "年龄"})
 8     // 去除边框
 9     table.setshowgrid(false)
10 
11     // 设置数据
12     num1 := widgets.newqtablewidgetitem2("0", 0)
13     name1 := widgets.newqtablewidgetitem2("anmi", 0)
14     age1 := widgets.newqtablewidgetitem2("20", 0)
15     table.setitem(0, 0, num1)
16     table.setitem(0, 1, name1)
17     table.setitem(0, 2, age1)
18 
19     num2 := widgets.newqtablewidgetitem2("1", 0)
20     name2 := widgets.newqtablewidgetitem2("terra", 0)
21     age2 := widgets.newqtablewidgetitem2("24", 0)
22     table.setitem(1, 0, num2)
23     table.setitem(1, 1, name2)
24     table.setitem(1, 2, age2)
25 
26     table.setwindowtitle("qtablewidget")
27     table.show()
28 
29     widgets.qapplication_exec()
30 }
正确的代码

显示效果:

解决QTableWidget不显示数据的问题

其实问题很简单,看代码的第六行,我们设置了行数。

qtablewidget需要先设置一共有多少行数据才能正常显示,如果不设置那么默认是0行数据,也就是什么也不显示。

所以需要qtablewidget的人一定不要忘了使用setrowcount告诉widget有多少数据需要绘制出来。