Zugriff auf die GUI von wo?

Alles rund um die Programmierung mit Qt
Antworten
kayssun
Beiträge: 5
Registriert: 18. Februar 2006 16:31
Kontaktdaten:

Zugriff auf die GUI von wo?

Beitrag 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)
michams
Beiträge: 56
Registriert: 14. November 2005 18:24

Beitrag 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.
kayssun
Beiträge: 5
Registriert: 18. Februar 2006 16:31
Kontaktdaten:

Beitrag von kayssun »

Wow, danke, das war's. Und sowas kostet mich 3 Tage...
Qt4.1.0, Linux, Gentoo
Antworten