Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1015|回复: 0

解决QTableWidget不显示数据的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-26 17:46:02 | 显示全部楼层 |阅读模式

    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有多少数据需要绘制出来。

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-22 21:00 , Processed in 0.059501 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表