有没有办法将参数绑定到插槽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
}
Run Code Online (Sandbox Code Playgroud)
我需要捕获激活上下文菜单的列的索引,并将其存储在我的窗口hideColumn
槽使用的成员变量中:
void MyWindow::hideColumn () {
view->setColumnHidden (m_column, true);
}
Run Code Online (Sandbox Code Playgroud)
我真正喜欢的是能够在创建菜单时将列号绑定到我的插槽,所以我不需要这个成员变量.基本上Qt相当于:
menu.addAction (tr ("Hide Column"),
boost::bind (&MyWindow::hideColumn, this,
event->columnAt (event->x()));
Run Code Online (Sandbox Code Playgroud)
甚至更好的适应的QAction ::触发信号,并将其连接到QTreeView则:: hideColumn插槽,这需要列索引作为参数:
menu.addAction (tr ("Hide Column"),
boost::bind (&QTreeView::hideColumn, view,
event->columnAt (event->x())));
Run Code Online (Sandbox Code Playgroud)
这有可能吗?