QStandardItem 以一种奇怪的方式插入行

Posted

技术标签:

【中文标题】QStandardItem 以一种奇怪的方式插入行【英文标题】:QStandardItem inserting rows in a weird way 【发布时间】:2012-07-10 15:21:28 【问题描述】:

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

例子

第一个结果:

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】:

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

尝试摆脱 QList+addRow 并执行以下操作:

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

【讨论】:

以上是关于QStandardItem 以一种奇怪的方式插入行的主要内容,如果未能解决你的问题,请参考以下文章

SqlConnection 状态以一种奇怪的方式变化

为啥在 Racket 中以一种奇怪的方式定义 foldl?

Android:裁剪位图(以一种奇怪的方式)

以一种奇怪的方式触地射击

为啥我的文本字符串以一种奇怪的方式换行? (HTML/CSS)

Sql Server 中的 DateTime 插入更改值