函数指针作为 SLOT 参数
Function pointer as SLOT argument
我知道它有类似的主题,但我是 C++ 初学者,无法理解它们,因为它们与我的问题几乎没有区别。
我这样定义类型
typedef void (MainWindow::*MenuListener)(QAction *);
我可以将我的 class 的方法作为参数传递,但在函数中我需要将它传递给 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
class 的方法,例如我尝试像 listener
参数一样传递的函数。
是时候学习 3 岁的 Qt 了New Signal Slot Syntax:
connect(&menu, &MainWindow::triggered, this, listener);
这些旧的 SIGNAL
和 SLOT
宏不接受函数指针,它们需要函数签名。
我知道它有类似的主题,但我是 C++ 初学者,无法理解它们,因为它们与我的问题几乎没有区别。
我这样定义类型
typedef void (MainWindow::*MenuListener)(QAction *);
我可以将我的 class 的方法作为参数传递,但在函数中我需要将它传递给 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
class 的方法,例如我尝试像 listener
参数一样传递的函数。
是时候学习 3 岁的 Qt 了New Signal Slot Syntax:
connect(&menu, &MainWindow::triggered, this, listener);
这些旧的 SIGNAL
和 SLOT
宏不接受函数指针,它们需要函数签名。