码迷,mamicode.com
首页 > 编程语言 > 详细

QTableWidget排序问题

时间:2015-05-15 17:49:17      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:qt

今天写代码,发现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->setHorizontalHeaderLabelslabels );

    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);

QTableWidget排序问题

标签:qt

原文地址:http://blog.csdn.net/hai200501019/article/details/45746477

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!