QT: signals from QMenu and QAction -


my problem make menu load files. here's code:

qstringlist filenamelist; filenamelist << "file1" << "file2" << "file3"; qmenubar *menubar = new qmenubar(); qmenu *menu = menubar->addmenu("file"); qmenu *load = menu->addmenu("load"); foreach (qstring filename, filenamelist) {     qaction *loadfile = new qaction(filename, this);     load->addaction(loadfile);     connect(load,signal(triggered(qaction*)),this, slot(load(qaction*))); } 

and slot:

void mainwindow::load(qaction* action) {     qdebug() << action->text(); } 

after click action button, qdebug shows:

"file1" "file1" "file1" 

but need run action once! qaction not have signal can name. how solve this? thank you!

the problem create same connection tree times in loop. need, doing once:

[..] foreach (qstring filename, filenamelist) {     qaction *loadfile = new qaction(filename, this);     load->addaction(loadfile); } connect(load, signal(triggered(qaction *)), this, slot(load(qaction *))); 

update

the alternative solution be:

foreach (qstring filename, filenamelist) {     qaction *loadfile = new qaction(filename, this);     load->addaction(loadfile);     connect(loadfile, signal(triggered()), this, slot(load())); } 

with corresponding slot:

void mainwindow::load() {     qaction *action = qobject_cast<qaction *>(sender());     if (action)         qdebug() << action->text(); } 

Comments

Popular posts from this blog

c# - How to get the current UAC mode -

postgresql - Lazarus + Postgres: incomplete startup packet -

javascript - Ajax jqXHR.status==0 fix error -