QtableView和无限while循环中的模型

用户名

我有一个QTableview我有一个附加的模型。我有一个无限的while循环,在该循环中,我从服务器发送和接收消息。收到消息后,我想在表中添加一行。
我的问题是我无法解决这个想法。当我这样做时,while (true)它不起作用。
如果有人可以帮助我,我将不胜感激。
这是我正在谈论的代码:

model = new QStandardItemModel(4,1,this);
ui->tableView->setModel(model);
ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);

while (true)
{
    // Server response
    reciever_input.wait_for_recieve();

    std::vector<std::string> res = decode_msg(_serverResponse.front());

    unsigned int it;
    it = 8;

    if (res[0] == "Y")
    {
        int row = 0;
        //here I want to add rows in my table
        for (; it < res.size(); it++, row++)
        {
            std::string temp = res[it]; // this is the string that I want to add
            QString qtemp = QString::fromUtf8(temp.c_str());
            QModelIndex index = model->index(row,0,QModelIndex());
            model->setData(index,qtemp);
        }
    }
    if (res[0] == "L")
        break;
}
彼得·N

您是否尝试过为服务器连接创建neu线程?我认为您应该在后台将其作为第二个线程运行,以防neu数据更新您的模型。

你可以在这里找到qt doc

您也可以在YouTube中找到很好的例子


其他想法:

MarKS是正确的,您的代码中缺少某些内容。使用此代码在模型末尾插入行:

int rowNr;
rowNr = model->rowCount();  
model->insertRow(rowNr);  //insert new row
model->setData(model->index(rowNr, 1), qtemp );  //in Column 1 - your string qtemp
model->submitAll();  //to hand over

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章