在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/