QStandardItem以奇怪的方式插入行

时间:2012-07-10 15:21:28

标签: qt qtableview qstandarditemmodel

我正在创建一个表并在其中插入行,就像这样。只有一行插入表中,并且条件太满,如果条件不满足,则显示错误。 问题是,当一个行插入满足条件时,另一行插入再次满足条件时不会重写该行但使用该行的下两列保持前两列空。

实施例

第一个结果:

2你好

第二个结果:

     3 hello

代码

void searchWindow::TextReturn()
{
        int id = (text->text()).toInt();
        map<int,QString>::iterator itt;
        itt = appWindow::dataa.find(id);
        if(itt != appWindow::dataa.end())           //returns 1 if we found something
        {
                m_mode1 = new QStandardItemModel(0,2,this);
                m_mode1->setHorizontalHeaderItem(0, new QStandardItem(QString("ID")));
                m_mode1->setHorizontalHeaderItem(1, new QStandardItem(QString("DATA")));

                m_items << new QStandardItem((QString("%1").arg(id)));
                m_items << new QStandardItem((*itt).second);
                m_mode1->appendRow(m_items);
                m_tablee->update();
                text->setText("");
                m_tablee->setModel(m_mode1);
        }
        else
        {
                m_mode1 = new QStandardItemModel(0,2,this);
                m_mode1->setHorizontalHeaderItem(0, new QStandardItem(QString("SEQUENCE")));
                m_mode1->setHorizontalHeaderItem(1, new QStandardItem(QString("MESSAGE")));

                m_msgBox = new QMessageBox();
                m_msgBox->setWindowTitle("Alert");
                m_msgBox->setText("INVALID  ID  ENTERED");
                m_msgBox->show();
                text->setText("");

                m_tablee->setModel(m_mode1);

        }
}

感谢您提前提供任何帮助

1 个答案:

答案 0 :(得分:0)

我不知道这是否会解决您的问题,因为在此示例中您有很多不明确的成员引用,但是您确定每次都清除该QList m_list吗?可能你每次只是积累更多的物品。

尝试摆脱QList + addRow,然后执行:

m_model->setItem(0,0,item1)
m_model->setItem(0,1,item2)