Seite 1 von 1

[gelöst, danke]Mein Widget wird nicht angezeigt...

Verfasst: 7. Januar 2010 17:09
von joebar
Hallo,

ich habe im Prinzip folgenden Code der einwandfrei läuft:

Code: Alles auswählen

//mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent) 
{

  QSplitter *splitter = new QSplitter(parent);
  QTextEdit *textedit = new QTextEdit;
  textedit -> setText("bla");
  
  
  treeView = new QTreeWidget();
  // Füge items dem treeView hinzu
 
  splitter->addWidget(treeView);
  splitter->addWidget(textedit);

  setCentralWidget(splitter);

}
Der Übersicht wegen möchte ich jetzt das ganze Coding auslagern in eine eigene Date uiComponent.cpp/.h

Code: Alles auswählen

//uiComponent.h
#ifndef UICOMPONENT_H
#define UICOMPONENT_H



class uiComponent : public QWidget
{
  Q_OBJECT
  
  public:
  uiComponent(QWidget *parent=0);


  private:


};

#endif
sowie

Code: Alles auswählen

//uiComponent.cpp
#include <QTextEdit>
#include <QDebug>
#include <QVBoxLayout>

#include "uiComponent.h"

uiComponent::uiComponent(QWidget *parent) : QWidget(parent)
{
 QTextEdit* editor  = new QTextEdit(); 
 editor -> setText("test");
 
 QVBoxLayout *layout = new QVBoxLayout;
 layout -> addWidget(editor);
 

}
und natürlich mainwindow.cpp

Code: Alles auswählen

//mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent) 
{
  uiComponent* mainUI = new uiComponent();
  QSplitter *splitter = new QSplitter(parent);
  QTextEdit *textedit = new QTextEdit;
  textedit -> setText("bla");
  
  
  treeView = new QTreeWidget();
  // Füge items dem treeView hinzu
 
  splitter->addWidget(treeView);
  splitter->addWidget(textedit);
splitter->addWidget(mainUI);

  setCentralWidget(splitter);

}
Statt den dritten Bereich sehe ich nur frei gelassenen Hintergrund, aber nicht das QTextEdit aus dem mainUI.

Ist wahrscheinlich total basic, aber die einschlägigen Qt Tutorials klatschen alles in ein File.

Danke.

Verfasst: 8. Januar 2010 08:13
von archer
Im Konstruktor von uiComponent(..) fehlt am Ende ein

Code: Alles auswählen

setLayout(layout);
oder beim Erzeugen des Layouts

Code: Alles auswählen

QVBoxLayout *layout = new QVBoxLayout(this);
Es hängt sonst irgendwo im Raum.