PDA

View Full Version : item new created old not appear in my QTreeView



SirJonas
16th October 2016, 20:37
The problem is when i add item the old item was deleted why?
code:

void MainWindow::cambioRoster(QString barejid, QString resource)
{
if(cliente.rosterManager().isRosterReceived() == true)
{
QXmppPresence::Type a = cliente.rosterManager().getPresence(barejid,resour ce).type();
QIcon online;
online.addFile(":/icons/user-online.png");
if(ui->arbolConectados->findItems(barejid,Qt::MatchExactly).size() == 0)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(0,barejid);
ui->arbolConectados->addTopLevelItem(item);
}
if(a == QXmppPresence::Available)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(0,resource);
item->setIcon(0,online);
ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]->addChild(item);
}
if(a == QXmppPresence::Unavailable)
{
int i=0;
while(i<ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]->childCount() && ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]->child(i)->text(0) != resource) //busqueda lineal
{
i++;
}
ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]->takeChild(i);
if(ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]->childCount() == 0)
{
online.addFile(":/icons/user-offline.png");
}
}
ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]->setIcon(0,online);
}
}

anda_skoa
17th October 2016, 18:56
Please, before you ask anymore questions for that, refactor your code to be at least somewhat readable.

All those repeated findItems for exactly the same input can really be done only once.


Cheers,
_