SirJonas
16th October 2016, 11:28
Some way of save in one sentence this line? i am trying to save this code in one sentece to avoid to repeat all time. I tried creating one QTreeWidgetitem but show me this error: ASSERT failure in QList<T>::operator[]: "index out of range".
ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]
Code working:
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);
}else
{
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);
}
}
ui->arbolConectados->findItems(barejid,Qt::MatchExactly)[0]
Code working:
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);
}else
{
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);
}
}