Passing an argument to a slot

后端 未结 5 2545
灰色年华
灰色年华 2020-11-22 16:15

I want to override mouseReleaseEvent with a bunch of QActions and QMenus...

connect(action1, SIGNAL(triggered()), this, SLOT(onStepIncreased()));

connect(ac         


        
5条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-22 17:03

    Use QSignalMapper. Like this:

    QSignalMapper* signalMapper = new QSignalMapper (this) ;
    connect (action1, SIGNAL(triggered()), signalMapper, SLOT(map())) ;
    connect (action5, SIGNAL(triggered()), signalMapper, SLOT(map())) ;
    connect (action10, SIGNAL(triggered()), signalMapper, SLOT(map())) ;
    connect (action25, SIGNAL(triggered()), signalMapper, SLOT(map())) ;
    connect (action50, SIGNAL(triggered()), signalMapper, SLOT(map())) ;
    
    signalMapper -> setMapping (action1, 1) ;
    signalMapper -> setMapping (action5, 5) ;
    signalMapper -> setMapping (action10, 10) ;
    signalMapper -> setMapping (action25, 25) ;
    signalMapper -> setMapping (action50, 50) ;
    
    connect (signalMapper, SIGNAL(mapped(int)), this, SLOT(onStepIncreased(int))) ;
    

提交回复
热议问题