2017-04-03 202 views
0

我想将参数传递到选择传递参数改变SLOT类似如下:Qt的:在的SelectionChanged()信号

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

,或者至少喜欢:

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

我想在SLOT中使用MyParameter。有没有办法做到这一点?是否有可能建立一个自定义selectionChanged()信号?

回答

0

您可以从您的selectionModel类继承,并使用所需的参数实现其自己的信号。然后创建一个连接到默认信号的插槽,并在其中收集参数并发出信号。

像这样:

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

它不工作的代码。这只是解释你如何做到这一点。