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

时间:2015-02-20 10:35:29

标签: c++ qt pointers

在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(*)())'

1 个答案:

答案 0 :(得分:1)

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