[solved] SLOT connecten - Konstruktor Frage?

Alles rund um die Programmierung mit Qt
Antworten
AndiLatte
Beiträge: 104
Registriert: 13. November 2007 13:39

[solved] SLOT connecten - Konstruktor Frage?

Beitrag 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
Zuletzt geändert von AndiLatte am 8. Februar 2008 12:38, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was soll der Compiler denn machen? Sich einen QString aus den Fingern saugen?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AndiLatte
Beiträge: 104
Registriert: 13. November 2007 13:39

Beitrag 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...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Vielleicht, aber unter Garantie nicht mit der gleichen Fehlermeldung.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AndiLatte
Beiträge: 104
Registriert: 13. November 2007 13:39

Beitrag 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()));
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AndiLatte
Beiträge: 104
Registriert: 13. November 2007 13:39

Beitrag 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()));
Antworten