解決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有多少數據需要繪制出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM