У меня есть графические элементы на виджете...
Нажимая правую кнопку нужно вывести список всех элементов, делаю я это так:
QMenu *listMenu;
QToolButton *listButton;
void Class::showList()
{
listMenu->clear();
for (int i = 0; i < mList.size(); ++i)
{
const Element &element = mList.at(i);
QAction *action = listMenu->addAction(element.mIcon, element.mText);
if (i == mCurrentIndex)
{
action->setCheckable(true);
action->setChecked(true);
}
//!!!!!! connect (action, SIGNAL(triggered()), this, SLOT(setCurrentIndex(i))); //!!!!!!!
}
listButton->showMenu();
}
Мне нужно что бы в зависимости от выбраного элемента в меню был выбран элемент в виджете... но сделать я этого могу только с помощью слота setCurrentIndex, который получает как параметр номер элемента...
добавлено спустя 12 минут: Сделал немного по хитрому, может у кого будет идеи по лучше...
Загнал в QAction.data номер элемента и уже в слоте:
QAction *action = (QAction*)sender();
setCurrentIndex(action->data().toInt());