我设置了一个QtableView来显示数据,用QStandardItemModel设置其表格,用QStandardItem设置其内容,我知道怎么添加,然后不知道怎么删除其中的一行。比如说我的表格里有个IP列,我想根据IP的来删除IP所在那一行。
这是我的代码:
C/C++ code
m_model.setColumnCount(4);
m_model.setRowCount(4);
ui.tableView->setModel(&m_model);
m_model.setHeaderData(0,Qt::Horizontal,tr("客户端IP"));
m_model.setHeaderData(1,Qt::Horizontal,tr("客户端DNS"));
m_model.setHeaderData(2,Qt::Horizontal,tr("客户端MAC"));
m_model.setHeaderData(3,Qt::Horizontal,tr("接受到的数据"));
if (FD_ISSET(SOCK_conn,&fdread))
{
QStandardItem *myItem = NULL;
if (recv(SOCK_conn,(char*)&myA,sizeof(ClientInfo1),0) != 0)
{
myItem = new QStandardItem;
myItem->setText(inet_ntoa(TempAddr.sin_addr));
m_model.setItem(row,coloumn,myItem);
coloumn++;
myItem = new QStandardItem;
myItem->setText(tr(myA.Client_DNS));
m_model.setItem(row,coloumn,myItem);
coloumn++;
myItem = new QStandardItem;
myItem->setText(tr(myA.Client_MAC));
m_model.setItem(row,coloumn,myItem);
coloumn++;
myItem = new QStandardItem;
myItem->setText(tr(myA.recvData));
m_model.setItem(row,coloumn,myItem);
coloumn = 0;
}
row++;
先获取包含查找IP的所有QStandardItem:
QList<QStandardItem *> QStandardItemModel::findItems ( const QString & text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0 ) const
然后获取行:
int QStandardItem::row () const
最后删除该行:
bool QAbstractItemModel::removeRow ( int row, const QModelIndex & parent = QModelIndex() )
QList<QStandardItem *> tList = m_model.findItems ("192.168.10.2");
QStandardItem* tItem = tList.at(0);
int row = tItem.row();
m_model.removeRow(row);