Ich habe eine Klasse, Mainwindow mit einem Zeiger auf eine Leinwand, mCanvas ...C++, QT. Funktionsaufruf für QShortcut existiert nicht
mainwindow.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
}
In mainwindow.cpp, innerhalb der M ainWindow-Konstruktor, ich zeige mCanvas auf ein Canvas (this). Ich versuche dann, einen neuen QShortcut mit der Aktion Canvas :: doSomething() zu erstellen.
mainwindow.cpp ...
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
new QShortcut(QKeySequence(Qt::Key_BracketLeft),
mCanvas, SLOT(doSomething()));
Allerdings, wenn ich versuchen, das Programm auszuführen, Ich erhalte den Fehler NO CALL-Abgleichsfunktion für doSomething(), wird der Compiler bedeutet nicht denken, dass doSomething() existiert. Im neuen QShortcut habe ich mCanvas als mCanvas, * mCanvas, & mCanvas; nichts funktioniert.
Was läuft falsch?