小编Bkl*_*lyn的帖子

问:调整信号/绑定参数到插槽?

有没有办法将参数绑定到插槽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)

这有可能吗?

c++ qt boost

3
推荐指数
2
解决办法
5866
查看次数

标签 统计

boost ×1

c++ ×1

qt ×1