Есть ли способ привязать аргументы к слотам ala boost :: bind ?
Вот, к примеру, У меня есть окно с представлением дерева, и я хочу позволить пользователю скрыть столбец из контекстного меню. В итоге я делаю что-то вроде:
void MyWindow::contextMenuEvent (QContextMenuEvent* event) {
m_column = view->columnAt (event->x());
QMenu menu;
menu.addAction (tr ("Hide Column"), this, SLOT (hideColumn ()));
// .. run the menu, etc
}
Мне нужно захватить индекс столбца, по которому было активировано контекстное меню, и сохранить его в переменной-члене, которая используется в hideColumn
слоте моего окна:
void MyWindow::hideColumn () {
view->setColumnHidden (m_column, true);
}
Что мне действительно нравится, так это возможность привязывать номер столбца к моему слоту при создании меню, чтобы мне не нужна эта переменная-член. В основном эквивалент Qt:
menu.addAction (tr ("Hide Column"),
boost::bind (&MyWindow::hideColumn, this,
event->columnAt (event->x()));
Или еще лучше, адаптируя сигнал QAction :: triggered и присоединяя его к слоту QTreeView :: hideColumn , который принимает индекс столбца в качестве аргумента:
menu.addAction (tr ("Hide Column"),
boost::bind (&QTreeView::hideColumn, view,
event->columnAt (event->x())));
Можно ли что-нибудь из этого сделать?