Seite 1 von 1

Zugriff auf die GUI von wo?

Verfasst: 21. Februar 2006 01:02
von kayssun
Hi

ich hänge jetzt shon etwas länger an diesem Probem und auch intensiveres Suchen mit google und die Hilfeseiten von Trolltech haben mich nicht weitergebracht.

Ich habe einen Dialog mit mehreren Schaltflächen, unter anderem der Combobox "cmbAuftraege", neu mit Qt4 erstellt. Für den dahinterliegenden Code will ich meinen alten aus Qt3 übernehmen. Da ich damals für jede Funktion einfach mit dem Designer einen Slot angelegt habe, würde ich das nun gern ähnlich machen. Aber ich weiß nicht, wo ich den alten Code hinkopieren kann, damit das ganze wieder funktioniert.

meine frmAuftraege.h:

Code: Alles auswählen


#include "ui_frmauftrag.h"

class frmAuftrag : public QDialog
{
	Q_OBJECT
	
	

public:
	frmAuftrag( QWidget *parent = 0 );

private:

	
private slots:
	// void openHaltungenAlt();
	void on_btnAlt_clicked()
	{
		QString auftrag = cmbAuftraege->currentText();
		if(auftrag.isEmpty()) QMessageBox::warning(this, "VAKIS - Fehler", QString::fromUtf8("Es wurde kein Auftrag ausgewählt"), "Ok");
		else {
			int auftragID = auftrag.section("[", 1, 1).section("]", 0, 0).toInt(); // Holt die AuftragsID aus dem Text (in den eckigen Klammern)
			emit auftragGewaehlt(auftragID);
			close();
		}
	}
};



Ich bekomme beim kompilieren immer wieder die Meldung, dass cmbAufraege nicht existiert, ich kann also nicht auf Objekte der GUI zugreifen. Wie muss ich den Code einbinden, damit das klappt?

(Ich wollte das Posting nicht unnötig aufblähen, wenn noch Infos fehlen, schiebe ich sie schnell nach)

Verfasst: 21. Februar 2006 07:04
von michams
Ich bekomme beim kompilieren immer wieder die Meldung, dass cmbAufraege nicht existiert
Womit der Compiler absolut recht hat. Wenn du dir das ui File anschaust, wirst du feststellen, daß die GUI-Infos darin in einer Klasse angelegt sind. Dem Compiler fehlt jedoch jegliche Verbindung dieser Klasse mit deiner Dialog-Klasse (das include oben reicht dafür nicht).

Normalerweise sollte es ausreichen, die Dialog-Klasse zusätzlich von der ui-Klasse abzuleiten, also zB:

Code: Alles auswählen

class frmAuftrag : public QDialog, private Ui::ui_frmAuftrag
wobei "ui_frmAuftrag" der Name der Klasse aus der ui-Datei ist.

Verfasst: 21. Februar 2006 11:21
von kayssun
Wow, danke, das war's. Und sowas kostet mich 3 Tage...