我有一个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;
}
您是否尝试过为服务器连接创建neu线程?我认为您应该在后台将其作为第二个线程运行,以防neu数据更新您的模型。
您也可以在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] 删除。
我来说两句