Seite 1 von 1

Mit QtDesigner erstelltes QDialog aus QMainWindow aufrufen

Verfasst: 21. September 2012 09:00
von FunKDefendeR
Hallo zusammen,
ich habe mit die letze Woche intensiv mit Qt beschäftigt und habe auch schon ein ganz ansehnliches Programm zustande gebracht.

Jetzt möchte ich ein About Fenster einblenden.
Also habe ich ein QDialog im QtDesigner erstellt, dann eine about.h und about.cpp angelegt.
Nun wollte ich vorgehen wie beim meinem Hauptprogramm, also sieht mein Code bisher so aus:

about.h

Code: Alles auswählen

#ifndef ABOUT_H
#define ABOUT_H

#include <qdialog.h>
#include <ui_about.h>

class about : public QDialog, public UI::AboutClass
{
	Q_OBJECT

public:
	about(QDialog *parent = 0);
	~about();

	private slots:
		void showAbout();
};

#endif
about.cpp

Code: Alles auswählen

#include "about.h"

about::about(QDialog *parent) : QDialog(parent){
	ui.setupUi(this);
}

about::~about(){}

void about::showAbout(){
	about a();
	a.show();
;}
Soweit die Theorie.

mein ui-File heißt about.ui und der QDialog an sich heißt AboutClass.

Jetzt habe ich folgende Fehlermeldungen:
Fehler 1 error C2653: 'UI': Keine Klasse oder Namespace c:\users\hinz\documents\visual studio 2010\projects\readgps\readgps\about.h 10
Fehler 2 error C2504: 'AboutClass': Basisklasse undefiniert c:\users\hinz\documents\visual studio 2010\projects\readgps\readgps\about.h 11

usw.

Woran liegt das?

Ich habe das ganze ja bereits ziemlich genau so bei meinem Hauptprogramm gemacht.

Danke schon mal für hoffentlich hilfreiche Beiträge.

Re: Mit QtDesigner erstelltes QDialog aus QMainWindow aufruf

Verfasst: 21. September 2012 10:08
von archer
Groß-Klein-Schreibung, Ui statt UI könnte helfen.

Re: Mit QtDesigner erstelltes QDialog aus QMainWindow aufruf

Verfasst: 21. September 2012 10:14
von archer
Nochwas, deinen Konstruktor solltest du dir auch noch mal anschauen.
Das Object ui, woher kommt es?

Re: Mit QtDesigner erstelltes QDialog aus QMainWindow aufruf

Verfasst: 21. September 2012 10:16
von RHBaum
Keine Ahnung was du da gemacht hasst ! :twisted:

Aber was auffaellt:

Code: Alles auswählen

class about : public QDialog, public UI::AboutClass
{
 ...
}
Dass soll doch deine About Klasse darstellen.
Die iss dafuer da den DIalog zu "zeichnen" ....

Mal ganz davon abgesehen, das "about" nen recht suboptimaler Klassenname ist ^^
besser AboutDlg oder QMyAboutDlg oder irgendsowas ... Gross am Anfang ... und vielleicht nen Kuerzel woran man erkennt das das ne Klasse ist die nen DIalog implementiert.


Wieso hat die nen slot:
void showAbout();

???

showAbout soll doch den Dialog erzeugen und zur Anzeige bringen ^^
Aka auch ne Instanz der Klasse erzeugen !
Das soll/muss aber im MainWIndows passieren !

Also MainWindow sollte den slot showAbout(); haben

und in dem Slot sollte dann ca. sowas stehen :

Code: Alles auswählen

void QMyMainWindow::showAbout()
{
    QMyAboutDlg  dlgAbout(this);
    int ireturn = dlg.exec(); /// DIalog modal anzeigen lassen ... 
       
}

Re: Mit QtDesigner erstelltes QDialog aus QMainWindow aufruf

Verfasst: 21. September 2012 10:56
von FunKDefendeR
Uhh...ok das mit der Groß-/Kleischreibung war natürlich ein dämlicher Fehler.

Danke RHBaum, habe meinen Fehler gefunden, der Konstruktor war natürlich auch doof, der brauch als Parameter natürlich ein Object der klasse QMainWindow und nicht QDialog.
Der Aufruf funktioniert so jetzt auch und den Klassennamen habe ich auch "verbessert" :wink:

Danke, noch mal an alle!