我知道它有类似的主题,但我是初学者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
参数。
答案 0 :(得分:1)
学习3岁Qt&#39; New Signal Slot Syntax的时间:
connect(&menu, &MainWindow::triggered, this, listener);
这些旧的SIGNAL
和SLOT
宏不会接受函数指针,他们期望函数签名。