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:

Code: Alles auswählen

     Control(const QString &title,
                  QWidget *parent = 0);
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:

Code: Alles auswählen

QString text = "null";
Control control(text); 
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()));