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

Я хочу использовать MyParameter в SLOT, Есть ли способ сделать это? Можно ли построить кастом 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);
}

Это не рабочий код. Это просто объяснить, как вы можете это сделать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]