IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Créer un lien entre un QTableView et LineEdit à l'aide de QDataWidgetMappar [QtSql]


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut Créer un lien entre un QTableView et LineEdit à l'aide de QDataWidgetMappar
    Bonjour,

    Je viens juste de commencer avec PyQt5 et je voudrais utilisé QDataWidgetMapper pour afficher les champs d'une table dans des lineEdit. J'ai beau cherché sur le net mais, j'ai pas trouver d'exemple claire.
    Je vous saurais très reconnaissant si quelqu'un pourrai m'aider avec un bon exemple.
    Merci.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé ce QDataWidgetMapper avec une base de données, mais voilà un petit exemple tout simple basé sur un QStandardItemModel qui devrait te donner des idées d'utilisation. En exécutant ce code, tu verras que les 3 colonnes (Nom, Adresse, Age) restent bien synchronisées quand on passe d'un enregistrement à l'autre avec les 2 boutons "Suivant" et "Précédent":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import QtWidgets, QtGui
     
    #############################################################################
    class Window(QtWidgets.QWidget):
     
        #========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
            self.setWindowTitle("Exemple de QDataWidgetMapper")
     
            # crée le modèle
            self.setupModel()
     
            # pour afficher le nom
            self.nameLabel = QtWidgets.QLabel("Nom:")
            self.nameEdit = QtWidgets.QLineEdit()
     
            # # pour afficher l'adresse
            self.addressLabel = QtWidgets.QLabel("Adresse:")
            self.addressEdit = QtWidgets.QTextEdit()
            self.addressEdit.setAcceptRichText(False)
     
            # # pour afficher l'age
            self.ageLabel = QtWidgets.QLabel("Age:")
            self.ageSpinBox = QtWidgets.QSpinBox()
     
            # Pour naviguer entre les enregistraments
            self.nextButton = QtWidgets.QPushButton("Suivant")
            self.previousButton = QtWidgets.QPushButton("Précédent")
     
            # Widget de correspondance entre les colonnes des enregistrements
            self.mapper = QtWidgets.QDataWidgetMapper(self)
            self.mapper.setModel(self.model)
            self.mapper.addMapping(self.nameEdit, 0)
            self.mapper.addMapping(self.addressEdit, 1)
            self.mapper.addMapping(self.ageSpinBox, 2)
     
            # Connexions
            self.previousButton.clicked.connect(self.mapper.toPrevious)
            self.nextButton.clicked.connect(self.mapper.toNext)
            self.mapper.currentIndexChanged.connect(self.updateButtons)
     
            # Nécessaire au premier lancement
            self.mapper.toFirst() 
            self.updateButtons(0)
     
            # positionne les widgets dans la fenêtre
            posit = QtWidgets.QGridLayout()
            # 1ère ligne
            posit.addWidget(self.nameLabel, 0, 0, 1, 1)
            posit.addWidget(self.nameEdit, 0, 1, 1, 2)
            posit.addWidget(self.nextButton, 0, 3, 1, 1)
            # 2e ligne
            posit.addWidget(self.addressLabel, 1, 0, 1, 1)
            posit.addWidget(self.addressEdit, 1, 1, 2, 2)
            posit.addWidget(self.previousButton, 1, 3, 1, 1)
            # 3e ligne
            posit.addWidget(self.ageLabel, 3, 0, 1, 1)
            posit.addWidget(self.ageSpinBox, 3, 1, 1, 2)
            # mise en place
            self.setLayout(posit)
     
        #========================================================================
        def setupModel(self):
            """Crée le modèle
            """
            self.model = QtGui.QStandardItemModel(5, 3, self)
     
            names = ["Alice", "Bob", "Carol", "Donald", "Emma"]
            adresses = ["Adresse Alice", "Adresse Bob", "Adresse Carol", "Adresse Donald", "Adresse Emma"]
            ages = ["12", "25", "29", "32", "41"]
     
            for row in range(0, len(names)):
     
                item = QtGui.QStandardItem(names[row])
                self.model.setItem(row, 0, item)
     
                item = QtGui.QStandardItem(adresses[row])
                self.model.setItem(row, 1, item)
     
                item = QtGui.QStandardItem(ages[row])
                self.model.setItem(row, 2, item)
     
        #========================================================================
        def updateButtons(self, index):
            """Met à jour l'état des boutons si nécessaire
            """
            self.previousButton.setEnabled(index>0)
            self.nextButton.setEnabled(index<self.model.rowCount()-1)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fen = Window()
        fen.show()
        sys.exit(app.exec_())

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Bonjour,

    Après plusieurs essais j'ai pu crée le lien entre TableView et des LineEdit selon le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     # model employes
            modellisteemloyes = QSqlTableModel(self)
            modellisteemloyes.setTable('Agents')
            modellisteemloyes.setEditStrategy(QSqlTableModel.OnManualSubmit)
            modellisteemloyes.select()
            modellisteemloyes.setSort(0, Qt.AscendingOrder)
            self.ui.tableViewEmployes.setModel(modellisteemloyes)
            self.ui.tableViewEmployes.resizeColumnsToContents()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    # Mapp
     
            mapperagent = QDataWidgetMapper(self)
            mapperagent.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
            mapperagent.setModel(modellisteemloyes)
            mapperagent.setItemDelegate(QSqlRelationalDelegate(self))
            mapperagent.addMapping(self.ui.lematricule, 0)
            mapperagent.addMapping(self.ui.lenom, 1)
            mapperagent.addMapping(self.ui.leprenoms, 2)
            mapperagent.addMapping(self.ui.lefonction, 3)
            mapperagent.addMapping(self.ui.lestructure, 4)
            mapperagent.toFirst()
    Seulement, il s'affiche que le premier enregistrement, je sais qu'il faut créer un index mais, comment. Je demande votre AIDE.
    Merci

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai modifié mon code précédent pour l'appliquer à la lecture d'une base de données.

    Le principe est simple:
    - ouverture de la base
    - création du modèle QSqlRelationalTableModel qui s'appuiera sur la base ouverte et sa table
    - création des widgets d'affichage
    - création du QDataWidgetMapper qui va établir le lien entre le modèle et les widgets d'affichage

    Il ne reste plus qu'à créer les boutons qui permettront de passer à l'enregistrement suivant ou précédent.

    La base de données (ici sqlite3) appelée "matable.db3" ne contient qu'une table "matable" avec les 5 enregistrements des 3 champs "names", "adresses" et "ages". Les données sont les mêmes que pour le code précédent.


    Voilà le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import QtWidgets, QtGui, QtCore, QtSql
     
    #############################################################################
    class Window(QtWidgets.QWidget):
     
        #========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
            self.setWindowTitle("Exemple de QDataWidgetMapper")
     
            # Ouvre la base sqlite3
            self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
            self.db.setDatabaseName("mabase.db3")
            if not self.db.open():
                QtWidgets.QMessageBox.critical(self, 
                        "Ouverture de la base",
                        "Erreur d'ouverture"
                        )
                raise ValueError ("Erreur d'ouverture de la base de données")
     
            # crée le modèle
            self.model = QtSql.QSqlRelationalTableModel(self, self.db)
            self.model.setTable("matable")
            self.model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
            self.model.select()
     
            # widget pour afficher le nom
            self.nameLabel = QtWidgets.QLabel("Nom:")
            self.nameEdit = QtWidgets.QLineEdit()
     
            # widget pour afficher l'adresse
            self.addressLabel = QtWidgets.QLabel("Adresse:")
            self.addressEdit = QtWidgets.QTextEdit()
            self.addressEdit.setAcceptRichText(False)
     
            # widget pour afficher l'age
            self.ageLabel = QtWidgets.QLabel("Age:")
            self.ageSpinBox = QtWidgets.QSpinBox()
     
            # Pour naviguer entre les enregistraments
            self.nextButton = QtWidgets.QPushButton("Suivant")
            self.previousButton = QtWidgets.QPushButton("Précédent")
     
            # Widget de correspondance entre le modèle et les widgets d'affichage
            self.mapper = QtWidgets.QDataWidgetMapper(self)
            self.mapper.setModel(self.model)
            self.mapper.addMapping(self.nameEdit, 0)
            self.mapper.addMapping(self.addressEdit, 1)
            self.mapper.addMapping(self.ageSpinBox, 2)
     
            # Définit les connexions
            self.previousButton.clicked.connect(self.mapper.toPrevious)
            self.nextButton.clicked.connect(self.mapper.toNext)
            self.mapper.currentIndexChanged.connect(self.updateButtons)
     
            # Nécessaire au premier lancement
            self.mapper.toFirst() 
            self.updateButtons(0)
     
            # positionne les widgets dans la fenêtre QWidget
            posit = QtWidgets.QGridLayout()
            # 1ère ligne
            posit.addWidget(self.nameLabel, 0, 0, 1, 1)
            posit.addWidget(self.nameEdit, 0, 1, 1, 2)
            posit.addWidget(self.nextButton, 0, 3, 1, 1)
            # 2e ligne
            posit.addWidget(self.addressLabel, 1, 0, 1, 1)
            posit.addWidget(self.addressEdit, 1, 1, 2, 2)
            posit.addWidget(self.previousButton, 1, 3, 1, 1)
            # 3e ligne
            posit.addWidget(self.ageLabel, 3, 0, 1, 1)
            posit.addWidget(self.ageSpinBox, 3, 1, 1, 2)
            # met en place
            self.setLayout(posit)
     
        #========================================================================
        def updateButtons(self, index):
            """Active ou désactive les boutons selon l'index
            """
            self.previousButton.setEnabled(index>0)
            self.nextButton.setEnabled(index<self.model.rowCount()-1)
     
        #========================================================================
        def closeEvent(self, event):
            """Méthode exécutée lors de la fermeture de la fenêtre
               ferme la base si nécessaire
            """
            try:
                self.db.close()
            except Exception:
                pass    
            event.accept()
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fen = Window()
        fen.show()
        sys.exit(app.exec_())
    [Edit]: tant qu'à faire, j'ajoute la petite base que j'ai créée à cette occasion, ce qui permettra au code ci-dessus de s'exécuter sans modif. Il faudra la dézipper et la placer dans le même répertoire que le code:
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Merci tyrtamos pour ta réponse.
    Y a t'il pas une autre façon d'afficher les données dans les widgets en cliquant simplement sur l'enregistrement de la table sans passé par les boutons suivant et précédant ??
    Merci encore.

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Je ne l'ai jamais fait, mais j'imagine qu'en ayant l'index d'un enregistrement de la base de données, on doit pouvoir l'afficher directement en utilisant la méthode setCurrentIndex(int) du QDataWidgetMapper, ou sa méthode setCurrentModelIndex(QModelIndex). Essaie les 2 pour voir celle qui marche.

    La doc du QDataWidgetMapper est là: http://doc.qt.io/qt-5/qdatawidgetmapper.html

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Bonjour,

    Je butte depuis plusieurs jours sur la création de l'index de ma tableView, j'ai ajouté la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     self.ui.tableViewEmployes.setCurrentIndex().row()
    mais je reçois le message suivant :
    Type Error setCurrentIndex(self.QModelIndex) not enough arguments.
    Je demande votre aide.
    Marci

  8. #8
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai répondu à la 1ère question qui concerne l'utilisation d'un QDataWidgetMapper pour afficher les enregistrements (un par un) d'une base de données dans des QLineEdit. Mais jusqu'à présent, ce lien est établi sans tenir compte d'un QTableView, et je ne sais pas faire une telle relation avec un QDataWidgetMapper entre un QTableView et des QLineEdit. A mon avis, il faut obtenir l'index de la ligne sélectionnée dans le QTableView, et afficher cet enregistrement demandé avec ce qui suit:

    Pour afficher dans tes QLineEdit un enregistrement précis d'une base de données, par exemple son 3ème enregistrement (index 2), il suffit d'exécuter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.mapper.setCurrentIndex(2)
    Essaie d'ajouter cette ligne à la fin du __init__ de mon dernier code, et tu verras que l'enregistrement affiché au lancement est bien le 3ème (index 2) et non le 1er (index 0).

  9. #9
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Bonjour,

    Merci pour votre réponse, effectivement en ajoutant mapperagent.setCurrentIndex(2) il s'affiche les éléments du 3ème enregistrement. En fouinant dans http://doc.qt.io/qt-5/qdatawidgetmapper.html j'ai trouvé :
    Code Qt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     QDataWidgetMapper *mapper = new QDataWidgetMapper();
    connect(myTableView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),
            mapper, SLOT(setCurrentModelIndex(QModelIndex)));
    Y a-t-il un traducteur ???

  10. #10
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà la traduction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.ui.tableViewEmployes.selectionModel().currentRowChanged.connect(self.appelmapper)
    self.appelmapper est une méthode à créer qui reçoit 2 QModelIndex, le 1er: point de départ, le 2ème: point d'arrivée. A chaque sélection d'une ligne du QTableView, ça lance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        def appelmapper(qindex1, qindex2):
     
            print(qindex2.row()) # affiche l'index de la ligne sélectionnée pour info
     
            self.mapper.setCurrentModelIndex(qindex2) # demande au mapper d'afficher la ligne sélectionnée
    Ça marche, mais je n'ai pas essayé l'appel au mapper parce que les codes chez moi qui contiennent QTableView et QDataWidgetMapper sont trop différents.

  11. #11
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Bonjour tyrtamos,

    Merci pour votre rapidité et excusez moi pour ce retard, j'ai été en voyage. J'ai bien ajouté la commande, elle m'affiche le numéro de l'index mais il y a un message qui s'affiche sur la console Python :
    NameError: name 'mapperagent' is not defined. J'ai beau essayé de voir la cause de ce message puisque 'mapperagent' est déjà définie.
    Y a t'il autre chose à définir ??
    Merci

  12. #12
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Rebonjour,

    Je viens de résoudre mon problème d'une manière plus facile en ajoutant la ligne suivante après la création du mapper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     self.ui.tableViewEmployes.selectionModel().currentRowChanged.connect(mapperagent.setCurrentModelIndex)
    Ainsi, pour afficher le contenu d'une ligne dans un QTableView dans des LineEdit à l'aide de QDataWidgetMapper il suffit d'exécuter le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    # Création du model :
    
            self.model = QSqlTableModel(self)
            self.model.setTable('NomdeTable')
            self.model.setEditStrategy(QSqlTableModel.OnManualSubmit)
            self.model.select()
            self.model.setSort(0, Qt.AscendingOrder)
            self.tableView.setModel(self.model)
    
    # Mappage 
    
            self.mapper = QDataWidgetMapper(self)
            self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
            self.mapper.setModel(self.model) # Model crée plus haut
            self.mapper.setItemDelegate(QSqlRelationalDelegate(self))
            self.tableView.selectionModel().currentRowChanged.connect(self.mapper.setCurrentModelIndex) # affiche les données dans les LineEdit. Il m'a fallu une centaine de poils arrachés 
            self.mapper.addMapping(lechamp, 0) # ajouter les champs de la table que vous voulez affichés dans des LineEdit
            ...................
            self.mapper.toFirst()
    Toutefois, si vous trouvez qu'il y a une erreur n’hésitez à me faire part de vos suggestions.

    Merci encore.

  13. #13
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'avais bien vu en C++ la solution de passer la main tout de suite à "mapperagent.setCurrentModelIndex" au lieu de passer la main à une méthode crée que j'avais appelée "appelmapper".

    Je ne l'ai pas proposée parce que je ne comprends pas comment le signal "currentRowChanged" qui envoie 2 arguments "QModelIndex" peut lancer l'exécution de "setCurrentModelIndex" qui n'en accepte qu'un. En plus, il faudrait que ce soit le 2ème "QModelIndex" (ligne sélectionnée) et non le 1er (ancienne ligne).

    Mais si ça marche, tant mieux!

    Et merci pour la question: j'ai appris aussi des trucs...

  14. #14
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Septembre 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 148
    Par défaut
    Merci à vous aussi tyrtamos pour votre patience et pour votre collaboration.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/05/2011, 16h13
  2. Réponses: 2
    Dernier message: 17/11/2009, 15h58
  3. Comment créer un lien entre NVU & Oscommerce
    Par la ch'tite dans le forum Internet
    Réponses: 0
    Dernier message: 09/08/2007, 16h03
  4. Réponses: 7
    Dernier message: 19/05/2006, 15h39
  5. [SQL-Server] Créer un lien entre un serveur sql et un forum php...
    Par johnless dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/01/2006, 22h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo