Comment trouver l'élément sélectionné à partir de customContextMenuRequested() sur QTreeView article?
J'ai mis en œuvre les menus contextuels dans QTreeView les articles avec le code suivant
MyDerivedQTreeView->setModel(MyDerivedQAbstractItemModel);
MyDerivedQTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(MyDerivedQTreeView,
SIGNAL(customContextMenuRequested(const QPoint &)),
MyDerivedQAbstractItemModel(),
SLOT(contextualMenu(const QPoint &)));
void MyDerivedQAbstractItemModel::contextualMenu(const QPoint& point)
{
QMenu *menu = new QMenu;
menu->addAction(QString("Test Item"), this, SLOT(test_slot()));
menu->exec(MyDerivedQTreeView->mapToGlobal(point));
}
MyDerivedQAbstractItemModel::contextualMenu() est appelée et je peux voir le menu contextuel.
Problème est menu contextuel doit être visible uniquement si l'utilisateur clique avec le bouton droit sur un élément, et il devrait être personnalisés selon l'élément sélectionné.
Comment puis-je obtenir si/l'élément sélectionné à partir de QPoint de l'information? Je suis sur Qt 4.5.3.
J'ai essayé MyDerivedQAbstractItemModel::getItem(MyDerivedQTreeView->currentIndex()). Elle renvoie le premier élément par défaut, même si je n'ai pas droit-cliquez sur un élément. Il renvoie toujours à un point même si je clique sur n'importe quel espace vide dans le QTreeView.
OriginalL'auteur vinaym | 2010-04-19
Vous devez vous connecter pour publier un commentaire.
Vous pourriez peut-être utiliser le indexAt() méthode de QTreeView pour obtenir le point où le clic est effectué, avant la construction de votre menu personnalisé.
OriginalL'auteur Leiaz
Peut-être que ce code va vous aider à:
==> boîte de dialogue.h <==
==> dialog.cpp <==
Bonne chance!
OriginalL'auteur mosg
La QTreeWidget::currentItem() fonction retourne l'élément qui a été cliqué avec le bouton droit. Il n'est pas clair qu'il fait en se basant sur la description, mais en fonction de mon utilisation, c'est ce qu'il fait.
OriginalL'auteur Chance