1. 程式人生 > >解決QTableWidget不顯示數據的問題

解決QTableWidget不顯示數據的問題

代碼 ica src widgets 解決 b- UNC pen png

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不顯示數據的問題