Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: nvek от Февраль 06, 2017, 11:08



Название: последний элемент дерева xml
Отправлено: nvek от Февраль 06, 2017, 11:08
надо мене иконку на него повесить другу
например
<node name = "">
 <node name = "">
 </node>
</node>
делаю так:
Код:
void StatTree::readNode(QTreeWidgetItem* item)
{
Q_ASSERT(xmlReader.isStartElement() && xmlReader.name() == "Node");

QTreeWidgetItem *node = createChildItem(item);
node->setText(0, xmlReader.attributes().value("name").toString());


if(!xmlReader.tokenType() == QXmlStreamReader::EndElement)
node->setIcon(0, *treeNode);
else
node->setIcon(0, *folderNode);


while (xmlReader.readNextStartElement())
{
if (xmlReader.name() == "Node")
{
readNode(node);
}
else
xmlReader.skipCurrentElement();
}
}
иконки одинаковые


Название: Re: последний элемент дерева xml
Отправлено: Пантер от Февраль 06, 2017, 11:16
Код
C++ (Qt)
if(!xmlReader.tokenType() == QXmlStreamReader::EndElement)
 

1. Почитай про приоритеты логических операций.
2. У тебя tokenType() никогда не будет QXmlStreamReader::EndElement.
3. Что ты хочешь сделать? Чтобы если есть дети была одна иконка, а если детей нет, то другая?


Название: Re: последний элемент дерева xml
Отправлено: nvek от Февраль 06, 2017, 11:22
ну да


Название: Re: последний элемент дерева xml
Отправлено: nvek от Февраль 08, 2017, 08:33
сделал так :D икон тут перересовывается
Код:
node->setIcon(0, *treeNode);

//рекурсия
while (xmlReader.readNextStartElement())
{
if (xmlReader.name() == "Node")
{
node->setIcon(0, *folderNode);
readNode(node);
}
else
xmlReader.skipCurrentElement();
}
не оптимально,Но зато работает