函数指针作为SLOT参数

时间:2015-12-19 23:36:43

标签: c++ qt signals-slots

我知道它有类似的主题,但我是初学者C ++程序员,无法理解他们,因为他们与我的问题几乎没有区别。
我定义了这样的类型

typedef void (MainWindow::*MenuListener)(QAction *);

我可以作为参数传递我的类的方法,但在函数中我需要将它传递给SLOT。我怎么能这样做? 在我的功能下面:

void MainWindow::showMenu(int count, MenuListener listener)
{
    if(0 < count) {
        int flags = ContextMenu::Remove;

        if(1 == count) { flags |= ContextMenu::Edit; }

        ContextMenu menu("ContextMenu", flags, this);
        connect(&menu, SIGNAL(triggered(QAction*)), this, SLOT(listener));
        menu.exec();
    }
}

函数showMenu()MainWindow类的方法,例如我尝试传递的函数,如listener参数。

1 个答案:

答案 0 :(得分:1)

学习3岁Qt&#39; New Signal Slot Syntax的时间:

connect(&menu, &MainWindow::triggered, this, listener);

这些旧的SIGNALSLOT宏不会接受函数指针,他们期望函数签名。