J'ai passé la moitié de la journée à essayer de résoudre le problème de personnalisation du comportement de QListWidget: lorsque vous utilisez le bouton gauche de la souris et déplace le curseur, le contenu de ListWidget défile est déplacé vers un autre élément qui apparaît sous le curseur de la souris. Je suis d'accord avec le défilement, mais je veux éviter de sélectionner tous les éléments qui en découlent, car cela provoque un fonctionnement rapide dans mon programme. Enfin, j'aimerais que le contenu de la liste défile lorsque vous appuyez sur la souris et que vous vous déplaciez, mais sélectionnez uniquement les éléments en cliquant directement dessus. Drag-n-drop est désactivé pour cette liste (qui est le comportement par défaut) et il devrait être; J'ai essayé de le désactiver explicitement: aucun changement.Désactiver la sélection automatique des éléments dans QListWidget sur click + glisser
J'ai lu tous les documents disponibles sur les classes liées à Qt comme QListWidget, QListWidgetItem, QListView, vous l'appelez! Je ai essayé de donner un sens au code source pour ces widgets; déterré StackOverflow et Google ... mais malheureusement aucun résultat :(
est ici tout le code correspondant pour mon QListWidget: sélection simple, rien d'extraordinaire:
QListWidget* categoryListWidget;
...
categoryListWidget = new QListWidget();
categoryListWidget->move(offsetX, offsetY);
categoryListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
categoryListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
categoryListWidget->setFocusPolicy(Qt::NoFocus);
categoryListWidget->setStyleSheet(listQSS);
...
categoryListWidget->clear();
new QListWidgetItem(tr("1 - Sample Category 1"), categoryListWidget);
new QListWidgetItem(tr("2 - Sample Category 2"), categoryListWidget);
new QListWidgetItem(tr("3 - Sample Category 3 with a very long name"), categoryListWidget);
new QListWidgetItem(tr("4 - Sample Category 4"), categoryListWidget);
C++/Qt 5.5, si c'est en quelque sorte pertinent, à la fois . Win et Mac partagent le même comportement
Avez-vous essayé d'utiliser la fonction eventFilter pour filtrer l'événement qui cause des problèmes? – user3147395
De quel événement parlez-vous? Il y a la souris Press, mouseMove et mouseRelease, combinaison classique. Je m'abstiendrais d'écrire ma propre version personnalisée de ListWidget s'il y avait un moyen simple de garantir son comportement (ce que je n'ai pas réussi à trouver). Avant celui-ci j'ai fait 4 autres personnalisations dans le même ListWidget, chacun d'entre eux prenait 2h chacun pour parcourir docs, samples, etc. et résultait en une ligne de code: mettre ce drapeau ou changer ce paramètre. J'espère vraiment trouver quelque chose de similaire. –
Désolé, je ne connais pas de drapeau qui implémentera ce comportement, mais je n'ai pas beaucoup d'expérience avec ListWidgets, donc il y a peut-être un drapeau que je ne connais pas. – user3147395