【发布时间】:2017-08-23 02:08:05
【问题描述】:
我有一个类,MainWindow,它带有指向 Canvas 的指针,mCanvas...
主窗口.h...
#include "canvas.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
//snip
private:
Canvas* mCanvas;
};
canvas.h...
class MainWindow;
class Canvas
{
public:
Canvas(MainWindow* parent);
//snip
public slots:
void doSomething();
private:
MainWindow* mParent;
};
Canvas.cpp...
Canvas::Canvas(MainWindow* parent)
{
mParent = parent;
}
void Canvas::doSomething()
{
//snip
}
在 MainWindow.cpp 的 MainWindow 构造函数中,我将 mCanvas 指向一个 Canvas(this)。然后我尝试使用操作 Canvas::doSomething() 创建一个新的 QShortcut。
MainWindow.cpp...
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
new QShortcut(QKeySequence(Qt::Key_BracketLeft),
mCanvas, SLOT(doSomething()) );
但是,当我尝试运行程序时,我收到错误 NO MATCHING FUNCTION CALL for doSomething(),这意味着编译器认为 doSomething() 不存在。在新的 QShortcut 中,我将 mCanvas 写为 mCanvas、*mCanvas、&mCanvas;没有任何效果。
出了什么问题?
【问题讨论】:
标签: c++ qt pointers forward-declaration