Falsche Slotdefinition? Dialog aus Hauptfenster-Menü öffnen

Alles rund um die Programmierung mit Qt
Antworten
Daedalus-XIII
Beiträge: 5
Registriert: 11. Juli 2005 12:30
Wohnort: Bielefeld

Falsche Slotdefinition? Dialog aus Hauptfenster-Menü öffnen

Beitrag von Daedalus-XIII »

Vermutlich eine reine Newbiefrage, aber ich werde da aus den Manuals nicht sonderlich schlau.

Ich habe in einer Designerdatei das Hauptfenster, in einer zweiten einen Dialog. Ueber das Hauptmenue der Anwendung soll ein
Dialog geoeffnet werden, das Signal kommt aber anscheinend nirgends an.

Hier die entsprechenden Sourcepassagen:


mainwindow.h

Code: Alles auswählen

class ZUTMain : public QMainWindow, private Ui::ZUTMain {
        
   QAction *quitAction;
   QAction *loginAction;
  
    ...

    public slots:
  		void openConnDialog( int ConnId );	

};		

mainwindow.cpp

Code: Alles auswählen

void ZUTMain::setupMenu(){

	menuBar = new QMenuBar;
	mainMenu= new QMenu (tr("&Main"),this);
	loginAction = mainMenu->addAction(tr("&Connect Server"));
	quitAction = mainMenu->addAction(tr("&Quit"));

	menuBar->addMenu(mainMenu);
	
	connect ( quitAction, SIGNAL(triggered()), this, SLOT(close()) );
	connect ( loginAction, SIGNAL(triggered()), this, SLOT(openConnDialog(connectionIndex)) );
}


void ZUTMain::openConnDialog(int ConnId ){
	
	ConnDialog *loginDialog;
	loginDialog = new ConnDialog(this);
	loginDialog->show();

}

dialogs.h

Code: Alles auswählen

#include "ui_connectDialog.h"
#include "ui_disconnectDialog.h"

class ConnDialog : public QDialog, private Ui::ConnDialog {
	
	Q_OBJECT
	
	public:
		ConnDialog (QWidget *parent = 0);

};

dialogs.cpp

Code: Alles auswählen

ConnDialog::ConnDialog (QWidget *parent)
									: QDialog (parent) {
										
		setupUi(this);
		
		connect(connectButton, SIGNAL(clicked()), this, SLOT(accept()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));

}
Wo mache ich dort den entscheidenen Fehler? das "quit"-signal funktioniert, wie es sollte, nur der Dialog wird nicht aufgerufen, eine zum testen eingebaute MessageBox verweigert ebenfalls den Dienst.

Gruß,
Marcel
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Falsche Slotdefinition? Dialog aus Hauptfenster-Menü öff

Beitrag von macman »

Daedalus-XIII hat geschrieben:

Code: Alles auswählen

connect ( loginAction, SIGNAL(triggered()), this, SLOT(openConnDialog(connectionIndex)) );
Wo mache ich dort den entscheidenen Fehler? das "quit"-signal funktioniert, wie es sollte, nur der Dialog wird nicht aufgerufen, eine zum testen eingebaute MessageBox verweigert ebenfalls den Dienst.
Ein Debugger hätte dir vielleicht gesagt 'Keinen passenden Slot gefunden', weil Du unterschiedliche Parameter hast. Laß den connectionIndex weg und es sollte gehen.
Daedalus-XIII
Beiträge: 5
Registriert: 11. Juli 2005 12:30
Wohnort: Bielefeld

Beitrag von Daedalus-XIII »

Da fehlt wohl noch ein Nachtrag, connectionIndex wird in ZUTMain-Klasse global als int deklariert. Das Weglassen führt leider auch nicht zum Erfolg :(
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Daedalus-XIII hat geschrieben:Da fehlt wohl noch ein Nachtrag, connectionIndex wird in ZUTMain-Klasse global als int deklariert. Das Weglassen führt leider auch nicht zum Erfolg :(
Es geht darum dass das triggered() Signal keinen Wert übergibt und der Slot deshalb auch keins empfangen darf. Also in der Deklaration darf schon kein int connectionIndex stehen.
Daedalus-XIII
Beiträge: 5
Registriert: 11. Juli 2005 12:30
Wohnort: Bielefeld

Beitrag von Daedalus-XIII »

ah danke, nun wird mir das Prinzip auch klarer :)
Antworten