函数指针作为SLOT参数

Function pointer as SLOT argument

本文关键字:SLOT 参数 指针 函数      更新时间:2023-10-16

我知道它有类似的主题,但我是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参数一样传递的函数。

是时候学习3岁Qt的新信号槽语法了:

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

这些旧的SIGNALSLOT宏不接受函数指针,它们需要函数签名。