QTableWidget排序问题
今天写代码,发现Qt4中QTableWidget显示查询结果数据时存在一个问题,具体原因不知道是用法不对还是QTableWidget本身存在的bug。现象如下:
1. 查询,能正常显示查询结果
2. 点击表头排序
3. 再一次进行查询,发现某写列内容为空
构造函数代码:
pTable = new QTableWidget(this);
QVBoxLayout*pLayout = newQVBoxLayout;
this->setLayout(pLayout);
QPushButton*pBtn = new QPushButton("查询",this);
pLayout->addWidget(pBtn);
pLayout->addWidget(pTable);
boolret =connect(pBtn, SIGNAL(clicked ( bool ) ) , this ,SLOT( QuerySlot( ) ) );
pTable->setSortingEnabled (true);
pTable->sortByColumn(0,Qt::AscendingOrder);
QStringListlabels ;
labels<<"供电单位"<<"变电站"<<"电压等级";
pTable->setColumnCount( labels.size() );
pTable->setHorizontalHeaderLabels ( labels );
pTable->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
pTable->setSelectionBehavior(QAbstractItemView::SelectRows);
查询函数代码:
pTable->clearContents();
pTable->setRowCount ( 0 );
QTableWidgetItem*pItem1 = NULL;
pTable->setRowCount(50);
for(int i = 0; i < 50; ++ i)
{
for (intj = 0; j< 3;++j)
{
pItem1 = new QTableWidgetItem;
pItem1->setText(QString::number(i)+","+QString::number(j));
pTable->setItem(i,j,pItem1);
}
}
都是执行同一个逻辑,搞不清楚为什么会出现这种情况。
目前找到的解决方法是,在查询函数开头加上
pTable->setSortingEnabled (false);
结尾加上
pTable->setSortingEnabled (true);
pTable->sortByColumn(0,Qt::AscendingOrder);
完整代码如下:
pTable->setSortingEnabled (false);
这样就可以正确显示。
pTable->clearContents();
pTable->setRowCount ( 0 );
QTableWidgetItem*pItem1 = NULL;
pTable->setRowCount(50);
for(int i = 0; i < 50; ++ i)
{
for (intj = 0; j< 3;++j)
{
pItem1 = new QTableWidgetItem;
pItem1->setText(QString::number(i)+","+QString::number(j));
pTable->setItem(i,j,pItem1);
}
}
pTable->setSortingEnabled (true);
pTable->sortByColumn(0,Qt::AscendingOrder);
http://blog.csdn.net/hai200501019/article/details/45746477
QTableWidget排序问题的更多相关文章
- 编程之美—烙饼排序问题(JAVA)
一.问题描述 星期五的晚上,一帮同事在希格玛大厦附近的"硬盘酒吧"多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:"我以前在餐 馆打工,顾 ...
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...
- QTableWidget行选中/删除/添加行
1 均分各列 tableWidget->horizontalHeader()->setStretchLastSection(true); //就是这个地方 tableWidget-> ...
- 关于SQL中的排序问题
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguratio ...
- distinct order by 排序问题
使用类似“SELECT DISTINCT `col` FROM `tb_name` ORDER BY `time` DESC”这样的sql语句时,会遇到排序问题. 以上面的sql语句分析:order ...
- QTableWidget控件总结<二>
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
- QTableWidget控件总结<一>
[1]QTableWidget简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件. 学习QTableWidget就要首先看看QTableView控件(控件也是有"家世& ...
- QTableWidget控件总结
[1]QTableWidget简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件. 学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研 ...
- QTableWidget 使用及美化_QtableWidget_QtableView滚动条宽度及样式
//创建及属性设置m_tableWidget = new QTableWidget(this);m_tableWidget->setRowCount(10);m_tableWidget-&g ...
随机推荐
- 【已解决】谁动了我的CurrentPrincipal?求助我在给Artech的wcf petshop增加授权机制的时候遇到的问题。
这个问题已解决,是绑定设置的问题,主要还是因为我自己没有深入理解WCF绑定的安全机制.在这篇博客里面我来说说怎么解决的. 下载了Artech的wcf petshop源码(博文链接)并调试运行成功后,打 ...
- asp.net js调用后台方法
先前网上百度了很多 ,大致都一样 但是不太详细,总是不成功,然后试了很多,把经验发给大家看看 前台js function aa() { //这里可以写你要带的参数用隐藏域放起来 __doPostBac ...
- iOS离线打包
预备环境 iOS开发环境,Mac OS.XCode 7.2以上版本: 下载HBuilder离线打包iOS版SDK(5+ SDK下载). SDK目录说明 HBuilder-Hello:离线打包演示应用: ...
- 快捷查看dll的PublicKeyToken
@echo off d: cd D:\Win2003\Microsoft Visual Studio 10.0\VC\ call vcvarsall.bat x86 echo. if not '%1' ...
- MVC项目中如何判断用户是在用什么设备进行访问
使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为 ...
- Spring boot 启动过程解析 logback
使用 Spring Boot 默认的日志框架 Logback. 所有这些 POM 依赖的好处在于为开发 Spring 应用提供了一个良好的基础.Spring Boot 所选择的第三方库是经过考虑的,是 ...
- JAVA用JNI方法调用C代码实现HelloWorld
一.首先是java运行环境的搭建,到官网下载java jdk安装即可(注意要修改环境变量).还可以顺便安装eclipse. 二.编写java代码,文件名HelloWorld.java public c ...
- IT第二天 - JAVA环境的配置、Hello的编写
IT第二天 上午 HTML的一些讲解 下午 JDK的安配置 JAVA语法的注意事项 Hello的编写 晚上 作业 对println的应用 笔记 1.Classpath环境变量的配置:因为DOS对于文件 ...
- wiki oi3117 高精度练习之乘法
题目描述 Description 给出两个正整数A和B,计算A*B的值.保证A和B的位数不超过500位. 输入描述 Input Description 读入两个用空格隔开的正整数 输出描述 Outpu ...
- JavaScript螺纹的问题和答案
要求: JavaScript是单线程的,有任务队列.比方使用setTimeou(func,secs)来在secs毫秒后向任务队列加入func.可是,setTimeout后面跟一个死循环,那么死循环导致 ...