社区
脚本语言
帖子详情
qtablewidget排序后 再重新加载数据 导致大片数据显示不出
屎克螂
2013-10-07 09:18:21
点了下qtablewidget 的标题,它排序正常,但是再点下查询(也就是重新获取数据),结果一大片数据显示不出。
[/quote]
...全文
668
5
打赏
收藏
qtablewidget排序后 再重新加载数据 导致大片数据显示不出
点了下qtablewidget 的标题,它排序正常,但是再点下查询(也就是重新获取数据),结果一大片数据显示不出。[/quote]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
silence_cyh
2014-12-28
打赏
举报
回复
2
重新获取数据之前先关闭可排序性,获取到数据之后再开可排序性,原因不明,但是我刚刚知道这样可以
hust259
2014-12-04
打赏
举报
回复
顶一下吧,同样遇到了这个问题。正在寻求方法中。
屎克螂
2013-10-07
打赏
举报
回复
我新手,参考别人写的,搬过去的,别人的也有这问题,于是就不知道怎么解决了, 就是点了某个列的排序 再点查询 就不正常了
屎克螂
2013-10-07
打赏
举报
回复
引用 1 楼 iasky 的回复:
你原来发过了,你不给代码或者日志,这个谁都不知道啊。
加载方法: ######################################### def refreshTableArea(self): DRG.logger.debug('[refreshTableArea] begin') self.tableWidget.clearContents() self.tableWidget.setRowCount(0) self.myObjList=self.myJsonDict.get('MemberCreditLog') DRG.logger.debug('before for->') i=0 self.sz={}#记录会员所对应的下标 for obj in self.myObjList: self.tableWidget.insertRow(i) colIndex=0 aItem=QtGui.QTableWidgetItem() aItem.setData(QtCore.Qt.UserRole, kKeyChangeLog) aItem.setData(QtCore.Qt.UserRole+1, obj['id']) text='' #摘要申明 employee=DRG.g_network.myEmployeeDict.get(obj['employee']) if (employee!=None): theText=employee.myFullname else: theText='' membercredit=DRG.g_network.myMemberCreditDict.get(obj['membercredit']) if (membercredit!=None): number=membercredit.myNumber member=membercredit.myMember category=membercredit.myCategory expires=membercredit.myExpires createTime=membercredit.myCreateTime #####取到子会员的父级 if(number==None): master=membercredit.myMaster membercredit=DRG.g_network.myMemberCreditDict.get(master) if(membercredit!=None): number=membercredit.myNumber+'(*)' else: member='' ############### else: number='' member='' category='' expires='' createTime='' if (member!=''): members=DRG.g_network.myMemberDict.get(member) if (members!=None): name=members.myName else: name='' if (category!=''): categorys=DRG.g_network.myMemberCategoryDict.get(category) if (categorys!=None): category_name=drf_getCurLangTextInDict(categorys.myNameDict) else: category_name='' comment='' #类型申明 try: strs=str(obj['transcode']).split(':') except Exception, e: strs=[''] #comments={'PAYBACK':'存款','PAY':'pay?', 'CREATE':'发卡', 'UPDATE':'修改', 'UNPAY':'unpay?'} if(strs[0]=='PAYBACK'): comment='存款' text='存款:%s¥, 余额:%s¥, 有效期:%s'%(str(obj['sum']),str(obj['balance']),str(expires)) elif(strs[0]=='CREATE'): comment='发卡' createTime=str(createTime).split('T') text='发卡时间:%s, 有效期:%s'%(createTime[0],str(expires)) elif(strs[0]=='UPDATE'): comment='修改' text='UPDATE' # if(self.ChangeLog_list=={} or self.ChangeLog_list.has_key(str(obj['membercredit']))==False): # theURL = "%s%s?ids=%s"%(DRG.g_network.myServerURL, kURLChangeLog, unicode(obj['membercredit'])) # DRG.g_network.beginGetRequest(theURL, flagFullUpdate=True, successCb=self.callback_ChangeLog_succeed, failureCb=self.callback_ChangeLog_failed) # # self.sz[str(obj['membercredit'])]=0 # # # txts=self.ChangeLog_list.get(str(obj['membercredit'])) # ChangeLog_i=self.sz.get(str(obj['membercredit'])) # txt=txts[ChangeLog_i].split('|:|') # comment=txt[0] # text=txt[1] # sz[str(obj['membercredit'])]+=1 elif(strs[0]=='PAY'): comment='pay?' text='PAY' elif(strs[0]=='UNPAY'): comment='unpay?' text='UNPAY' aItem=QtGui.QTableWidgetItem(comment if comment else '') aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) colIndex+=1 theEndText=drf_getDatetimePart(obj['createTime'], 'datetime') aItem=QtGui.QTableWidgetItem(theEndText if theEndText else '') aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) colIndex+=1 aItem=QtGui.QTableWidgetItem(theText if theText else '') aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) colIndex+=1 aItem=QtGui.QTableWidgetItem(number if number else '') aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) colIndex+=1 aItem=QtGui.QTableWidgetItem(name if name else '') aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) colIndex+=1 aItem=QtGui.QTableWidgetItem(category_name if category_name else '') aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) colIndex+=1 aItem=QtGui.QTableWidgetItem(text) aItem.setTextAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) self.tableWidget.setItem(i, colIndex, aItem) i+=1 self.tableWidget.resizeColumnsToContents() self.tableWidget.resizeRowsToContents(); self.handleFocus() DRG.logger.debug('[refreshTableArea]end->') self.refreshPageInfo()
iasky
2013-10-07
打赏
举报
回复
你原来发过了,你不给代码或者日志,这个谁都不知道啊。
解决
qtablewidget
加载
大量
数据
卡顿的问题
这主要是因为
QTableWidget
在初始化时,会尝试一次性
加载
所有
数据
,并将每一行每一列都渲染在内存中,
导致
了巨大的内存消耗和CPU负载。 为了解决这一问题,开发人员通常会考虑采用一种称为“惰性
加载
”(Lazy ...
在
QTableWidget
中
显示
大
数据
量
在访问
数据
库后,在本地得到包含了
数据
的集合,然后获取
数据
总量;之后tableWidget的滑动条的滑动长度可以定义成 tableWidget的每行row的宽度 *
数据
总量;...只取这部分
数据
显示
到tableWidget中。
Qt
QTableWidget
基本功能及
排序
功能
虽然
QTableWidget
提供了基本的
排序
功能,但若需要更复杂的
数据
结构和
排序
逻辑,可能需要创建自定义的QAbstractTableModel子类,重写`data()`, `headerData()`, `sort()`等方法。 6. **样式与
显示
**: 可以通过`...
QTableWidget
实现大
数据
分页快速
显示
.zip
然而,当处理大量
数据
时,直接将所有
数据
一次性
加载
到
QTableWidget
中可能
导致
性能问题,如界面卡顿,内存消耗过大。针对这种情况,"
QTableWidget
实现大
数据
分页快速
显示
"的解决方案应运而生。 这个解决方案的核心...
自定义
QTableWidget
实现分页。
在处理大量
数据
时,这可能会
导致
性能问题,因为所有的
数据
都会一次性
加载
到内存中。为了解决这个问题,我们可以自定义一个分页组件与
QTableWidget
结合使用,以实现
数据
的动态
加载
。下面我们将详细讲解如何实现这个...
脚本语言
37,743
社区成员
34,213
社区内容
发帖
与我相关
我的任务
脚本语言
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
复制链接
扫一扫
分享
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
试试用AI创作助手写篇文章吧
+ 用AI写文章