Vererbung QWidget

Alles rund um die Programmierung mit Qt
Antworten
newyew
Beiträge: 4
Registriert: 11. August 2008 12:57

Vererbung QWidget

Beitrag von newyew »

Hallo,

in meiner QSplitter-Umgebung habe ich ein QWidget und mein Objekt, welches von QWidget abgeleitet ist, plaziert. Das abgeleitete Objekt nimmt leider nicht den ganzen Teil der QSplitter-Umgebung ein, in der es platziert ist. Woran kann das liegen? Hat doch alles geerbt.

Danke Lars

Header der von QSlitter abgeleiteten Klasse

Code: Alles auswählen

class ColorMixxWidget : public QSplitter
{
	Q_OBJECT
public:
	ColorMixxWidget(QWidget *parent=0); // is main widget

};
Konstruktoren der von QSlitter abgeleiteten Klasse

Code: Alles auswählen

ColorMixxWidget::ColorMixxWidget(QWidget *parent)

{	
	setWindowTitle("ColorMixx");
	resize(600, 400); // default size of window
	setOrientation(Qt::Vertical);

	QWidget* w2 = new QWidget();
	w2->setStyleSheet("background-color: white");

	ColorArea* c1 = new ColorArea();
	c1->setStyleSheet("background-color: blue");
	
	addWidget(c1);
	addWidget(w2);
}
Header der von QWidget abgeleiteten Klasse

Code: Alles auswählen

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

};
Konstruktoren der von QWidget abgeleiteten Klasse

Code: Alles auswählen

ColorArea::ColorArea(QWidget *parent)
{
//	resize(600, 100);	
//	setStyleSheet("background-color: white");

	QLabel *label = new QLabel( this );
	label->setText("hallo"  );
}
[/b][/code]
Dateianhänge
Screenshot
Screenshot
widget.png (13.6 KiB) 2583 mal betrachtet
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Die beiden Widgets des QSplitter nehmen schon den vollen Platz ein, dein QLabel ist aber nur das Child eines solchen Widgets...
newyew
Beiträge: 4
Registriert: 11. August 2008 12:57

Beitrag von newyew »

Das Label habe ich nur eingefügt, da dann zu sehen ist, dass die Hintergrundfarbe nur für den Bereich gültig ist, wo etwas platziert wurde. Wenn das Widget den gesamten Platz der QSplitter-Umgebung einnimmt, warum ist die Hintergrundfarbe dann nicht sichtbar? Warum verhält sich mein abgeleitetes Widget anders als das QWidget? Ich habe jetzt zwei QWidgets in die QSplitter-Umgebung eingesetzt. Der Screenshot zeigt das Ergebnis, was ich eigentlich auch erreichen möchte (allerdings mit meiner Klasse).

Code: Alles auswählen

ColorMixxWidget::ColorMixxWidget(QWidget *parent)

{	
	setWindowTitle("ColorMixx");
	resize(600, 400); // default size of window
	setOrientation(Qt::Vertical);

	QWidget* w2 = new QWidget();
	w2->setStyleSheet("background-color: white");

	QWidget* w1 = new QWidget();
	w1->setStyleSheet("background-color: blue");

	QLabel *label = new QLabel( w1 );
	label->setText("hallo"  );

// 	ColorArea* c1 = new ColorArea();
// 	c1->setStyleSheet("background-color: blue");
	
	addWidget(w1);
	addWidget(w2);
}
Dateianhänge
widget.png
widget.png (12.19 KiB) 2575 mal betrachtet
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Es wäre noch sinnvoll das Label in ein Layout zu setzen, damit es das ganze widget ausfüllen kann.
Antworten