Seite 1 von 1

Falsche Slotdefinition? Dialog aus Hauptfenster-Menü öffnen

Verfasst: 11. Juli 2005 14:44
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

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

Verfasst: 11. Juli 2005 15:16
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.

Verfasst: 11. Juli 2005 15:54
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 :(

Verfasst: 11. Juli 2005 16:18
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.

Verfasst: 11. Juli 2005 16:24
von Daedalus-XIII
ah danke, nun wird mir das Prinzip auch klarer :)