Seite 1 von 1
[solved] SLOT connecten - Konstruktor Frage?
Verfasst: 8. Februar 2008 10:36
von AndiLatte
Ich möchte eine Funktion einer Klasse in einer anderen Klasse connecten und per Button aufrufen:
So sieht es aus:
Code: Alles auswählen
Control*c = new Control;
openAct = new QAction(QIcon(":/data/buttons/folder-open.png"), tr("&Open Folder"), this);
connect(openAct, SIGNAL(triggered()), c, SLOT(open()));
Das ist der Konstruktor der Control Klasse:
Das sagt der Compiler:
mainwindow.cpp:341: error: no matching function for call to ‘Control::Control()’
control.h:46: note: candidates are: Control::Control(const QString&, QWidget*)
controlpanel.h:40: note: Control::Control(const Controll&a
Verfasst: 8. Februar 2008 10:39
von Christian81
Was soll der Compiler denn machen? Sich einen QString aus den Fingern saugen?
Verfasst: 8. Februar 2008 10:40
von AndiLatte
Christian81 hat geschrieben:Was soll der Compiler denn machen? Sich einen QString aus den Fingern saugen?
hehe. recht haste!
Wenn ich so rangehe:
meckert er aber auch...
Verfasst: 8. Februar 2008 11:16
von Christian81
Vielleicht, aber unter Garantie nicht mit der gleichen Fehlermeldung.
Verfasst: 8. Februar 2008 11:27
von AndiLatte
Christian81 hat geschrieben:Vielleicht, aber unter Garantie nicht mit der gleichen Fehlermeldung.
Code: Alles auswählen
error: no matching function for call to ‘MainWindow::connect(QAction*&, const char [13], Control&, const char[8]
Code: Alles auswählen
openAct = new QAction(QIcon(":/data/buttons/folder-open.png"), tr("&Open Folder"), control);
openAct->setShortcut(tr("Ctrl+O"));
openAct->setStatusTip(tr("Open an existing folder"));
connect(openAct, SIGNAL(triggered()), control, SLOT(open()));
Verfasst: 8. Februar 2008 11:34
von Christian81
Ich glaube Du solltest Dir erstmal ein C++ - Buch reinziehen...

Du hast aus einem Pointer auf control ein Objekt gemacht und wunderst Dich jetzt das das connect nicht mehr geht weil es pointer verlangt.
Verfasst: 8. Februar 2008 12:38
von AndiLatte
Christian81 hat geschrieben:Ich glaube Du solltest Dir erstmal ein C++ - Buch reinziehen...

Du hast aus einem Pointer auf control ein Objekt gemacht und wunderst Dich jetzt das das connect nicht mehr geht weil es pointer verlangt.
wie war das mit dem vor lauter bäumen den wald nicht sehen
Code: Alles auswählen
QString text = "null";
Control *control = new Control(text);
openAct = new QAction(QIcon(":/data/buttons/folder-open.png"), tr("&Open Folder"), control);
openAct->setShortcut(tr("Ctrl+O"));
openAct->setStatusTip(tr("Open an existing folder"));
connect(openAct, SIGNAL(triggered()), control, SLOT(open()));