QTableWidget排序问题

今天写代码,发现Qt4中QTableWidget显示查询结果数据时存在一个问题,具体原因不知道是用法不对还是QTableWidget本身存在的bug。现象如下:

1.      查询,能正常显示查询结果


QTableWidget排序问题_第1张图片

2.      点击表头排序

QTableWidget排序问题_第2张图片

3.      再一次进行查询,发现某写列内容为空

QTableWidget排序问题_第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);

你可能感兴趣的:(qt)