将类方法传递给const char*参数

Pass class method to const char * parameter

本文关键字:char 参数 const 类方法      更新时间:2023-10-16

在Qt中,QShortcut有这样的构造函数

QShortcut(const QKeySequence& key, QWidget *parent,
          const char *member = 0, const char *ambiguousMember = 0,
          Qt::ShortcutContext context = Qt::WindowShortcut);

据我从文档中了解,我可以将方法传递给第三个参数,而不是使用connect-to-signal-activated。但我怎样才能把方法传递到那里呢?使用

QShortcut* sh = new QShortcut(QKeySequence(Qt::Key_Alt, Qt::Key_1), this, &OnShortcut);

QShortcut* sh = new QShortcut(QKeySequence(Qt::Key_Alt, Qt::Key_1), this, &MyClass::OnShortcut);

给出错误

错误:调用"QShortcut::QShortcut(QKeySequence,KeyPressProcessing*const,void(*)())"时没有匹配的函数

必须使用SLOT(OnShortcut())而不是&OnShortcut,因为QShortcut类构造函数需要const char *作为第二个和第三个参数,而不是指向函数的指针。因此,Qt具有专用的转换宏SLOT,它接受函数签名作为自变量,并将其转换为适合建立连接的形式。