将 class 方法传递给 const char * 参数
Pass class method to const char * parameter
在 Qt QShortcut 中有这样的构造函数
QShortcut(const QKeySequence& key, QWidget *parent,
const char *member = 0, const char *ambiguousMember = 0,
Qt::ShortcutContext context = Qt::WindowShortcut);
据我从文档中了解到,我可以将方法传递给第三个参数,而不是使用连接信号激活。但是我怎样才能在那里传递方法呢?使用
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
class 构造函数需要 const char *
作为第二个和第三个参数而不是指针到一个函数。因此,Qt 有专用的转换宏 SLOT
,它接受函数签名作为参数,并将其转换为适合建立连接的形式。
在 Qt QShortcut 中有这样的构造函数
QShortcut(const QKeySequence& key, QWidget *parent,
const char *member = 0, const char *ambiguousMember = 0,
Qt::ShortcutContext context = Qt::WindowShortcut);
据我从文档中了解到,我可以将方法传递给第三个参数,而不是使用连接信号激活。但是我怎样才能在那里传递方法呢?使用
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
class 构造函数需要 const char *
作为第二个和第三个参数而不是指针到一个函数。因此,Qt 有专用的转换宏 SLOT
,它接受函数签名作为参数,并将其转换为适合建立连接的形式。