• 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

  • 相关阅读:
    PLSQL过程创建和调用
    约束定义及相关用法
    序列和索引
    控制用户访问
    ORACLE常用数据字典
    管理对象与数据字典
    Oracle enterprise linux系统的安装以及ORACLE12C的安装
    SUSE12的虚拟机安装以及ORACLE12C的安装
    PLSQL developer开发工具相关配置
    设计模式之六则并进
  • 原文地址:https://www.cnblogs.com/findumars/p/5176065.html
Copyright © 2020-2023  润新知