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

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


据我从文档中了解,我可以将方法传递给第三个参数,而不是使用connect来激活信号。但是如何在那儿传递方法呢?使用

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,该宏接受功能签名作为参数并将其转换为适合于建立连接的形式。

关于c++ - 将类方法传递给const char *参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28626862/

10-09 04:10