2017-04-03 2 views
0

I einen Parameter für die Auswahl übergeben wollen geändert SLOT wie folgt aus:Qt: Übergeben von ein Argument in dem selection (Signal)

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

Oder zumindest mag:

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

Ich möchte die MyParameter in der SLOT zu verwenden. Gibt es einen Weg, es zu tun? Ist es möglich, eine benutzerdefinierte selectionChanged() Signal zu bauen?

Antwort

0

Sie können von Ihrer Klasse selectionModel erben und ein eigenes Signal mit den erforderlichen Parametern implementieren. Erstellen Sie dann einen Steckplatz, der mit dem Standardsignal verbunden ist und in dem die Parameter erfasst und Ihr Signal ausgegeben werden.

So:

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); 
} 

Es ist nicht Code zu arbeiten. Es ist nur zu erklären, wie Sie es tun können.

Verwandte Themen