解决QTableWidget不显示数据的问题
Posted apocelipes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决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 }
这是它的效果:
没错,表头正常显示了,然而数据却不见了!
我们再来看一下修复后的代码:
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需要先设置一共有多少行数据才能正常显示,如果不设置那么默认是0行数据,也就是什么也不显示。
所以需要QTableWidget的人一定不要忘了使用SetRowCount告诉widget有多少数据需要绘制出来。
以上是关于解决QTableWidget不显示数据的问题的主要内容,如果未能解决你的问题,请参考以下文章
Python Qt GUI设计:QTableViewQListViewQListWidetQTableWidgetQTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)(代码片