2017-04-03 2 views
0

Je veux passer un paramètre à la sélection a changé SLOT comme ce qui suit:Qt: Passer un argument dans le signal SelectionChanged()

connect(selectionModel, SIGNAL(selectionChanged (const QItemSelection &, const QItemSelection &, MyParameter)), 
    this, SLOT(OnSelection(const QItemSelection &, const QItemSelection &, MyParameter))); 

Ou du moins comme:

connect(selectionModel, SIGNAL(selectionChanged (MyParameter)), 
    this, SLOT(OnSelection(MyParameter))); 

Je veux pour utiliser le MyParameter dans le SLOT. Y a-t-il un moyen de le faire? Est-il possible de créer un signal personnalisé selectionChanged()?

Répondre

0

Vous pouvez hériter de votre classe selectionModel et implémenter son propre signal avec les paramètres requis. Ensuite, créez un slot qui se connecte au signal par défaut, et dans lequel recueillir les paramètres et émettre votre signal.

Comme ceci:

MySelectionModel: public SelectionModel{ 
public: 
    MySelectionModel(){ 
     connect(this, 
      SIGNAL(selectionChanged(const QItemSelection & , const QItemSelection &)), 
      this, 
      SLOT(myPrivateSlot(const QItemSelection & , const QItemSelection &))); 
    } 
private slots: 
    void myPrivateSlot(const QItemSelection & selected, const QItemSelection & deselected){ 
     //collect or calculate params you want 
     emit mySignal(selected, deselected, yourParams); 
    } 
signals: 
    void mySignal(const QItemSelection & selected, const QItemSelection & deselected, MyParams params); 
} 

Il n'est pas le code de travail. C'est juste expliquer comment vous pouvez le faire.