Décalage sur QTreeWidgetItem
Bonjour a tous
je fais appelle a vous suite à un problème que je rencontre avec Qt.
J'ai une classe dérivée de QTreeWidget. Dans cette classe j'ajoute des QTreeWidgetItem.
Mon probleme est le suivant. Lorsque j'ajoute des items dans des items parents, je n'ai pas de decalage dans l'affichage entre le pere et ses enfants (comme se serait le cas dans une arborescence normale).
Comme j'utilise quasiment toutes les valeurs par defauts pour les QTreeWidget et QtreeWidgetItem, je me pose la question de ce que j'ai modifié ou mal réalisé pour que ce décalage ne se fasse pas. car en regardant des exemples, les décalages se font d'eux même.
Qu'ai je mal fait?
Voici le code d'ajout d'un item et celui d'ajout d'un item dans un pere :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| //--------------------------------------------------------------------------------------------------
/// @todo comment
//--------------------------------------------------------------------------------------------------
QTreeWidgetItem * QShTreeView::AddItem(QString strItemName, bool checkable, int type, int index)
{
//
//Check if the element doesn't exist
QList<QTreeWidgetItem*> itemsList = findItems(strItemName, Qt::MatchExactly);
if(itemsList.isEmpty())
{
QTreeWidgetItem *pItem = new QTreeWidgetItem(this, type);
if(checkable)
{
pItem->setFlags(pItem->flags() | Qt::ItemIsUserCheckable);
pItem->setCheckState(0, Qt::Checked);
}
pItem->setText(m_iFirstColumn, strItemName);
//OffsetText(pItem);
insertTopLevelItem(index, pItem);
return pItem;
}
return NULL;
}
//--------------------------------------------------------------------------------------------------
/// @todo comment
//--------------------------------------------------------------------------------------------------
QTreeWidgetItem * QShTreeView::AddItemInParent(QString strItemName, bool checkable, QString strParentName, int type, int index)
{
QTreeWidgetItem * pParent;
QTreeWidgetItem * pItem;
//
//Check if the element doesn't exist
QList<QTreeWidgetItem*> itemsList = findItems(strItemName, Qt::MatchExactly | Qt::MatchRecursive);
if(itemsList.isEmpty())
{
//
//Find the parent
QList<QTreeWidgetItem*> parentList = findItems(strParentName, Qt::MatchExactly | Qt::MatchRecursive, m_iFirstColumn);
if(!parentList.isEmpty())
{
pParent = parentList.first();
pItem = new QTreeWidgetItem(pParent, type);
if(checkable)
{
pItem->setFlags(pItem->flags() | Qt::ItemIsUserCheckable);
pItem->setCheckState(0, Qt::Checked);
}
pItem->setText(m_iFirstColumn, strItemName.Get());
//OffsetText(pItem);
return pItem;
}
}
return NULL;
} |
Le code fait ce qui lui est demandé. Me manque juste ce fameux décalage. Du coup, si vous avez la solution, je suis preneur.
A savoir que j'ai déjà essayé d'ajouter des espaces dans le text de mes items. Mais comme je me sers de ce text pour pour retrouver des objets dans mon soft, cette solution n'est pas vraiment bonne. Et j’espère que vous saurez m'aiguiller dans une solution plus correcte.
En attendant vos réponse.
Merci d'avance.