zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    子线程循环10次,接着主线程循环100,接着又回到子线程循环10次.....如此循环50次
    java面向对象中的String类中12种常用的方法
    网络编程TCP协议-聊天室
    网络编程(UDP协议-聊天程序)
    Swing布局管理器
    java排序方法中的选择排序方法
    java排序方法中的插入排序方法
    java数组中的三种排序方法中的冒泡排序方法
    css3模仿雨滴(附源码)
    html5+css3实现3D图片(附源码)
  • 原文地址:https://www.cnblogs.com/findumars/p/5176065.html
Copyright © 2011-2022 走看看