6
votes

Obtenir la valeur précédente de Qcombobox, qui est dans un QTableWidget, lorsque la valeur est modifiée

dire que j'ai un qtablawidget et dans chaque ligne il y a un qcombobox et un qspinbox . Considérez que je stocke que je stocke leurs valeurs est un qmap Themap;

Lorsque ComboBoxe S ou Boîtes d'essores est en cours de modification, je souhaite mettre à jour Themap . Je devrais donc savoir quelle était la valeur précédente de la liste déroulante afin de remplacer par la nouvelle valeur du comboBox et veillez également à la valeur de la boîte à spin.

Comment puis-je faire cela?

P.s. J'ai décidé de créer une fente que lorsque vous cliquez sur une table, elle stocke la valeur actuelle de la liste déroulante de cette ligne. Mais cela ne fonctionne que lorsque vous appuyez sur la légende de la ligne. Dans d'autres endroits (en cliquant sur un Combobox ou sur un SpinBox ) itemselectionChanged () Signal de QTableWidget ne fonctionne pas .

Donc, en général, mon problème est de stocker la valeur de la liste déroulante de la ligne sélectionnée et que je vais obtenir comboBox ou spinbox change même et traitera Themap facilement.


0 commentaires

4 Réponses :


8
votes

Que diriez-vous de créer votre propre classe Qcombobox dérivée, quelque chose du long des lignes de: xxx

, puis connectez-vous à myTextChangeDsignal , ce qui fournit également le Old Combo Box Texte.

J'espère que cela aide.


2 commentaires

C'est bien bien sûr, mais comment puis-je comprendre la boîte combande de lignes (ou la boîte de rotation) a été modifiée?


Cela ne fonctionnera pas si le "ancien texte" faisait partie de la liste initiale des articles et est maintenant sélectionné pour la première fois.



0
votes

Ma suggestion est de mettre en œuvre un modèle, ce qui vous aiderait à faire une séparation propre entre les données et à l'interface utilisateur des données. Votre modèle serait alors informé qu'un index de modèle donné (rangée et colonne) est modifié dans les nouvelles données et vous pouvez modifier toutes les autres données dont vous aviez besoin à ce stade.


0 commentaires

5
votes

Un peu en retard mais j'avais le même problème et résolu de cette manière: xxx


2 commentaires

Ceci est une manière intelligente et simple.


Bien sûr, cela ne fonctionne que si l'utilisateur a sélectionné un élément à l'aide de la souris.



0
votes

J'avais juste un problème similaire, mais pour moi, j'avais besoin de l'index précédent pour quelque chose de très trivial alors définissant et mettre en œuvre une classe entière pour cela était injustifiée.

Alors, ce que j'ai fait à la place, c'était un argument appelé "PrécédentInex" et a mis à jour sa valeur qu'après avoir fait tout ce dont j'avais fait tout ce dont j'avais besoin avec elle


0 commentaires