[gelöst] Multiple Inheritance Approach

Alles rund um die Programmierung mit Qt
Antworten
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

[gelöst] Multiple Inheritance Approach

Beitrag von archon »

Hallo

Ich darf also endlich mit qt4 programmieren und bin gerade dabei ein Grundgerüst für die Applikation mit MainWindow zu schaffen. Ich hab die GUI im Designer erstellt, komm im Moment mit der Anbindung nicht weiter.

Hier meine Dateien:

Code: Alles auswählen

#include "ui_mainform.h"

#include <QApplication.h>
#include <QSplashscreen.h> 
#include <QMainWindow.h>
#include <QPixmap.h>

int main( int argc, char ** argv )
{
	QApplication app(argc, argv);

	QPixmap pixmap("images/splash.png"); 
   	QSplashScreen *splash = new QSplashScreen(pixmap); 
   	splash->show(); 

    QMainWindow *window = new QMainWindow;
    Ui::MainForm ui;
    ui.setupUi(window);

    window->show();


	splash->finish(window); 
    
   	delete splash;

    return app.exec();
}
und mainform.h

Code: Alles auswählen

#include <QtGui/QMainWindow>
#include "ui_mainform.h"

class MainForm : public QMainWindow, private Ui::MainForm
{
        Q_OBJECT

    public:
        MainForm(QWidget *parent = 0);
        
    protected: 

	private slots: 

	private: 
};

MainForm::MainForm(QWidget *parent)
        : QMainWindow(parent)
{
        setupUi(this);

		logTextEdit->append("Hallo");
        
}
dabei möcht ich einfach das Hallo im Text Feld ausgeben. Der Gui und Splash kommt aber der TextEdit zeigt nix an. Was mach ich falsch? Der Compiler (Mingw) sagt alles ok.
Zuletzt geändert von archon am 28. September 2006 14:01, insgesamt 2-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Hätte dir beim debuggen aufffallen müssen. Du rufst dein Window auf, im Konstruktor wird das setupUi gemacht, dann schreibst Du dein 'Hallo' und dann rufst Du in main nochmal setupUi auf, wodurch dein 'Hallo' wieder überpinselt wird.
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

Hi!

Jo danke schon mal, aber ein auskommentieren von setupUi im mainform.h bringt auch nix. Ich hab mir das mit dem zweimaligen setup auch schon gedacht aber blick noch nicht ganz durch was da eigentlich im main.cpp geschieht mit

Code: Alles auswählen

    Ui::MainForm ui; 
    ui.setupUi(window); 

?!
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das ändert ja nichts daran, das Du erst den Text schreibst und ihn dann wieder übermalst. Wenn ein setupUi auskommentieren, dann das in main.
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

auch schon gemacht-> gui wird nicht angezeigt (leeres kleines fenster)
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

Wenn ich

Code: Alles auswählen

Ui::MainForm ui;
ui.setupUi(window);

lineEdit->setText("hallo");
in main hinzufüge geht es natürlich aber nicht eben über die standard MIA Klasse wies im Tutorial bei Trolltech beschrieben ist.
Irgendetwas stimmt noch mit der Vererbung nicht...aber was?
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

So klappt es nun endlich: ein MainWindow (erstellt im Designer) im (bequemen) Multiple Inheritance Approach:

main.cpp:

Code: Alles auswählen

#include "ui_mainform.h"
#include "mainform.h"

#include <QApplication.h>
#include <QMainWindow.h>

int main( int argc, char ** argv )
{
    QApplication app(argc, argv);

    MainForm *window = new MainForm;
    window->show();
    return app.exec();
}
mainform.h:

Code: Alles auswählen

#ifndef MAINFORM_H_
#define MAINFORM_H_

#include "ui_mainform.h"

class MainForm : public QMainWindow, private Ui::MainForm
{
        Q_OBJECT

    public:
         MainForm(QWidget *parent = 0);
        ~MainForm(){};
    protected: 

    private slots: 

    private:
        Ui::MainForm ui;

};



#endif /*MAINFORM_H_*/
mainform.cpp

Code: Alles auswählen

#include "mainform.h"

#include <QMainWindow.h>

MainForm::MainForm(QWidget *parent)
        : QMainWindow(parent)

{
	
        setupUi(this);
        lineEdit->setText("Hurzlpurzl");
		
        //letz fetz
}
Antworten